MVC / MVP / MVVM到底是什么?

时间:2009-08-19 08:06:58

标签: wpf model-view-controller design-patterns mvvm mvp

我最近参与了一个.Net WPF项目,建立了一个零售销售点系统,我第一次使用了MVP模式。我花了一点时间围绕着改变方法,但是一旦我这样做了,我就认为这个概念震撼了!

我的问题是:MVC,MVP和MVVM之间有什么区别?如果有明确的区别,是否有关于何时应该使用一种模式而不是另一种模式的指导原则?

如果有人可以就此提供指导,或指出解释差异的文章,我会非常感激。

2 个答案:

答案 0 :(得分:17)

Microsoft的应用程序架构指南描述了MVC和MVP,并探讨了两者之间的差异。

http://www.codeplex.com/AppArch

这篇MSDN文章描述了MVVM及其演变。

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

答案 1 :(得分:3)

通过查看特定框架中实现的特定模式,很难理解模式之间的差异。这篇msdn文章WPF MVVM引用了Martin Fowlers的原创文章,将一种模式解释为一般方法:

  

早在2004年,Martin Fowler发表了一篇关于名为Presentation Model(PM)的模式的文章,认为MVVM是更普遍的PM模式的专业化,   为WPF和Silverlight平台量身定做。

因此,要了解不同的模式,看看Martin Fowler对不同方法的描述是有用的。他的Passive View模式是MVP方法。他的Supervising Controller模式是MVC方法。他的Presentation Model模式是MVVM方法。这个older article涉及这种模式的演变。

查看不同语言的实现也可能有所帮助。文章Implementing event-driven GUI patterns using the ZK Java AJAX framework将上述三种Martin Fowler模式与现代Java框架进行了对比。尽管它与WPF有着不同的语言和不同的框架,但它可能有助于查看模式而不是模式的实现,以便用不同的语言来完成。