繁体   English   中英

MVVM 中的 ViewModel 是否使用桥接或适配器设计模式?

[英]Is ViewModel in MVVM using bridge or adapter design pattern?

我正在研究 GoF 的设计模式并分析一个 C# 项目。 ViewModel 被视为桥接模式还是适配器模式? 至于Model和View是中间层吗?

谢谢。

ViewModel 是否被视为 Bridge?

不它不是。 正如维基所说:

桥接模式是软件工程中使用的一种设计模式,旨在“将抽象与其实现分离,以便两者可以独立变化”。 是的,可以说抽象可以是UI或者XAML,实现是一个视图model。从这个角度来看,是的,它有相似之处。 但是,UI 或 XAML 不是抽象的 class 或接口。 所以可以断定ViewModel不是Bridge模式。

ViewModel 是否被视为适配器?

不它不是。 适配器模式更多的是让你现有的代码与更新的系统或界面一起工作。

例如,您有CatTiger的现有代码:

public interface ICat
{
    void Sound();
}

public class Cat : ICat
{
    public void Sound()
    {
        Console.WriteLine("I am cat");
    }
}

和:

public interface ITiger
{
    void Sound();
}

public class Tiger : ITiger
{
    public void Sound()
    {
        Console.WriteLine("I am Tiger");
    }
}

然后有必要使用Tiger而不是Cat 但是我们怎样才能做到呢? 我们可以使用Adapter模式:

public class TigerAdapter : ICat
{
    ITiger _tiger;

    public TigerAdapter(ITiger tiger)
    {
        _tiger = tiger; 
    }

    public void Sound()
    {
        _tiger.Sound();
    }
}

然后它可以像这样使用:

List<ICat> cats = new List<ICat>()
{
    new TigerAdapter(new Tiger())
};

但是如果你有现存的View model,不能在另一个View中使用,那么你可以创建class,将现有的View Model适配为现有的View Model。那么可以说你使用了Adapter模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM