[英]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 是否被视为适配器?
不它不是。 适配器模式更多的是让你现有的代码与更新的系统或界面一起工作。
例如,您有Cat
和Tiger
的现有代码:
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.