我最近参与了一个.Net WPF项目,建立了一个零售销售点系统,我第一次使用了MVP模式。我花了一点时间围绕着改变方法,但是一旦我这样做了,我就认为这个概念震撼了!
我的问题是:MVC,MVP和MVVM之间有什么区别?如果有明确的区别,是否有关于何时应该使用一种模式而不是另一种模式的指导原则?
如果有人可以就此提供指导,或指出解释差异的文章,我会非常感激。
答案 0 :(得分:17)
答案 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有着不同的语言和不同的框架,但它可能有助于查看模式而不是模式的实现,以便用不同的语言来完成。