为什么有些人将MVVP作为MVC的进化/改进,而它只是一些实现呢?

时间:2011-01-30 11:38:26

标签: wpf silverlight model-view-controller frameworks

围绕MVVP的常见神话是,最初Marting Fowler确实创建了一个名为MVP的模式,然后Grossman让它演变成MVVP。

他们是否仔细阅读了原始的MVC文件? MVC是作为概念呈现的,例如它从不强加一个单一的模型,它确实说模型可以分成多个较小的模型,这取决于人们想要对系统建模的方式。因此,如果想要创建被动视图或胖视图,那么重要的是许多视图和模型之间的双向绑定。

所以我很惊讶地读到假装MVVP是一些新的现代发明的文章,而wpf中的双向数据绑定是一场新的革命,对我而言,业界对于40年前设置的概念进行具体化很慢。这就是造成“软件危机”的原因,因为基本概念实施得很糟糕甚至缺乏,程序员也是行业供应商的囚犯。

所以这是原始论文 http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

告诉我这些“现代”模式从根本上与MVC相矛盾。

1 个答案:

答案 0 :(得分:9)

你需要做功课! Martin Fowler在UI模式(以及一般模式)方面具有丰富的知识。请参阅他关于UI架构的文章:

http://martinfowler.com/eaaDev/uiArchs.html

Martin提出了一个名为演示模型(PM)的模式,其中PM是视图的表示,它独立于视图本身的UI控件:

http://martinfowler.com/eaaDev/PresentationModel.html

他提到了这种模式最容易实现的是使用数据绑定的UI框架,这减少了对“管道”代码的需求。

Gossman首先创造了术语Model-View-ViewModel(MVVM),但大多数人认为这与PM的模式相同,但是,大多数人认为MVVM是PM的WPF / Silverlight特定版本,即MVVM通常意味着进一步遵循惯例,例如使用DataTemplates,ICommand等......

这两种模式都与MVC类似,如果你将依赖关系绘制到每个模式的三个组件,MVC会创建一个三角形,而PM& MVVM是一条线。

大多数有经验的开发人员采用实用的方法来处理模式。它们是一种工具,选择最适合您的问题的工具,如果您需要弯曲它以使其适合,那就去吧。

停止压力 - 写一些代码; - )