MVC,MVP和MVVM设计模式在c#代码方面有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (49)

如果我们使用短语“MVC,MVP和MVVM设计模式之间的区别”来搜索Google,那么我们可能会得到一些URL,它们从理论上讨论MVC MVP和MVVM设计模式之间的区别

MVP

在无法通过数据上下文进行绑定的情况下使用。Windows Forms就是一个很好的例子。为了从模型中分离视图,需要演示者。由于视图不能直接绑定到演示者,所以必须通过接口(IView)将信息传递给视图。

MVVM

在可以通过数据上下文进行绑定的情况下使用。为什么?每个视图的各种IView界面都被删除,这意味着需要维护的代码更少。MVVM可能的一些例子包括使用Knockout的WPF和javascript项目。

MVC

在视图和程序其余部分之间的连接并不总是可用的情况下使用(并且不能有效地使用MVVM或MVP)。这清楚地描述了Web API与发送到客户端浏览器的数据分离的情况。微软的ASP.NET MVC是管理这种情况的一个很好的工具,并且提供了一个非常清晰的MVC框架

我希望获得由这三种设计模式(MVC,MVP和MVVM)实现的3个类似CRUD应用程序的源代码。这样我可以通过代码并了解如何为这三种设计模式(MVC,MVP和MVVM)编写代码。

因此,如果有任何这样的文章讨论代码对于这三种设计模式(MVC,MVP和MVVM)看起来会有什么不同,那么请将我重定向到该文章。

提问于
用户回答回答于

实际上,你选择的“平台”在如何使用这些模式方面也起着重要作用。例如,MVVM自然适合WPF,而MVP可以很好地适用于Windows Forms。ASP.Net MVC不言自明。

用户回答回答于

写出一些基本的差异:

MVC:

传统的MVC就是这样

  1. 模型:充当数据的模型
  2. 查看:处理可以作为用户界面的用户视图
  3. 控制器:控制模型和视图之间的交互,其中视图调用控制器来更新模型。如果需要,View可以调用多个控制器。

MVP:

与传统MVC类似,但Controller由Presenter替代。但是,与Controller不同,Presenter负责更改视图。该视图通常不会call演示者。

MVVM

这里的区别在于View Model的存在。这是观察者设计模式的一种实现,模型中的变化也在视图中由虚拟机表示。例如:如果更改滑块,则不仅更新模型,而且更新视图中显示的可能是文本的数据。所以有一个双向数据绑定。

扫码关注云+社区