在编写C#代码方面,MVC,MVP和MVVM设计模式之间的区别是什么?
在编写C#代码方面,MVC,MVP和MVVM设计模式之间的区别是什么?
如果我们使用短语“MVC、MVP和MVVM设计模式的区别”在Google上搜索,那么我们可能会得到一些URL链接,这些链接讨论了MVC、MVP和MVVM设计模式的区别,如:
MVP
在无法通过“数据上下文”进行绑定的情况下使用。Windows Forms是这方面的一个完美例子。为了将视图与模型分离,需要一个Presenter。由于视图不能直接绑定到Presenter,因此必须通过接口(IView)将信息传递给视图。
MVVM
在可以通过“数据上下文”进行绑定的情况下使用。为什么呢?因为每个视图的各种IView接口都被删除了,这意味着要维护的代码更少。一些可能使用MVVM的例子包括WPF和使用Knockout的javascript项目。
MVC
在视图与程序的其余部分之间的连接并不总是可用的情况下使用(你无法有效地使用MVVM或MVP)。
这清楚地描述了一个情况,即Web API与发送到客户端浏览器的数据分离。 Microsoft的ASP.NET MVC是管理这种情况的绝佳工具,并提供了一个非常清晰的MVC框架。
但我没有发现一篇论文在理论上讨论这三种设计模式的区别并附带样例代码。
如果我能得到一篇讨论这三种设计模式(MVC、MVP和MVVM)的区别以及代码的文章,那就太好了。
我想获取这三个设计模式(MVC、MVP和MVVM)实现的3个相似的CRUD应用程序的源代码,以便我可以浏览代码并了解如何为这三个设计模式(MVC、MVP和MVVM)编写代码。所以如果有任何这样的文章讨论代码在这三种设计模式下的不同之处,请将我重定向到该文章。
以下是一些基本的区别:
MVC:
传统的MVC模式包括:
- Model:作为数据的模型
- View:处理用户界面的视图
- Controller:控制模型和视图之间的交互,其中视图调用控制器更新模型。如果需要,视图可以调用多个控制器。
MVP:
与传统的MVC模式类似,但控制器被Presenter替换。但是,Presenter不像控制器那样只负责更改视图。通常,视图不会调用Presenter。
MVVM:
这里的区别在于引入了视图模型。它类似于观察者设计模式的一个实现,在其中,模型的变化也会通过VM在视图中表示。
例如:如果滑块发生变化,不仅会更新模型,还会更新在视图中显示的文本数据。因此,存在双向数据绑定。