标准的“模型视图控制器”模式和微软的模型/视图/视图模型模式之间有区别吗?
当前回答
简而言之,在MVC控制器中,ViewModel知道(控件)视图,而在MVVM中,ViewModel不知道谁使用它。ViewModel将其可观察属性和操作公开给任何可能对使用它感兴趣的人。这一事实使得测试更容易,因为在ViewModel中没有对UI的引用。
其他回答
视图模型是用户界面元素的“抽象”模型。它必须允许您以非可视的方式(例如测试)在视图中执行命令和操作。
如果你使用过MVC,你可能有时会发现创建模型对象来反映视图的状态很有用,例如,显示和隐藏一些编辑对话框等。在这种情况下,您使用的是视图模型。
MVVM模式只是将该实践推广到所有UI元素。
而且这不是微软的模式,WPF / Silverlight数据绑定特别适合使用这种模式。但是没有什么能阻止您使用它与java服务器面,例如。
mvmc,或者MVC+,对于企业和快速应用程序开发来说似乎是一种可行的方法。虽然将UI与业务和交互逻辑分开很好,但“纯”MVVM模式和大多数可用示例在单一视图上工作得最好。
对您的设计不太确定,但我的大多数应用程序都包含页面和几个(可重用的)视图,因此ViewModels确实需要在某种程度上进行交互。使用页面作为控制器将完全违背MVVM的目的,因此不为底层逻辑使用“VM-C”方法可能会导致..嗯. .随着应用程序的成熟,具有挑战性的构造。即使在VB-6中,我们中的大多数人也可能停止了对Button事件进行业务逻辑编码,并开始将命令“中继”到控制器,对吗?我最近研究了许多关于这个主题的新兴框架;我最喜欢的显然是Magellan(在codeplex)方法。编码快乐!
http://en.wikipedia.org/wiki/Model_View_ViewModel#References
简单的区别:(灵感来自Yaakov的Coursera AngularJS课程)
MVC(模型-视图-控制器)
模型:模型包含数据信息。不调用或使用控制器和视图。包含业务逻辑和表示数据的方法。其中一些数据可能以某种形式显示在视图中。它还可以包含从某些源检索数据的逻辑。 控制器:作为视图和模型之间的连接。视图调用控制器,控制器调用模型。它基本上通知模型和/或视图进行适当的更改。 视图:处理UI部分。与用户交互。
模型视图视图模型
ViewModel:
它是视图状态的表示。 它保存在视图中显示的数据。 响应视图事件,也就是表示逻辑。 为业务逻辑处理调用其他功能。 永远不要直接要求视图显示任何东西。
MVVM模型-视图视图模型类似于MVC,模型-视图控制器
控制器被替换为ViewModel。ViewModel位于UI层下面。ViewModel公开视图所需的数据和命令对象。你可以把它想象成一个容器对象视图从它那里获取数据和动作。ViewModel从模型中提取数据。
Russel East写了一篇博客,详细讨论了为什么MVVM不同于MVC
MVVM是表示模型模式的改进(有争议)。我说有争议,因为唯一的区别是WPF如何提供数据绑定和命令处理的能力。
推荐文章
- [Vue警告]:找不到元素
- 模板方法和策略模式之间的区别是什么?
- MVC中的业务逻辑
- 将WPF组合框绑定到自定义列表
- 如何在Kotlin中实现生成器模式?
- 工厂模式和策略模式之间的区别是什么?
- 如何向一个5岁的孩子解释依赖注入?
- 我怎么知道什么时候创建一个接口?
- 在PHP5中创建单例设计模式
- 什么时候我们应该使用观察者和可观察对象?
- 在哪里放置AutoMapper.CreateMaps?
- 使用Enum实现单例(Java)
- 由Jon Skeet撰写的《Singleton》澄清
- 为什么c#不提供c++风格的'friend'关键字?
- Java / Jakarta EE web开发,我从哪里开始,我需要什么技能?