2009-08-19 4 views
41

Ich habe kürzlich an einem .Net-WPF-Projekt gearbeitet, um ein Point-of-Sale-System für den Einzelhandel zu entwickeln, bei dem ich das MVP-Muster zum ersten Mal verwendete. Es hat eine Weile gedauert, bis ich mich mit dem Wechsel der Herangehensweise beschäftigt hatte, aber als ich das gemacht habe, dachte ich, dass das Konzept rockt!MVC/MVP/MVVM Was zum Teufel?

Meine Frage ist das: Was ist der Unterschied zwischen MVC, MVP und MVVM? Wenn es eine klare Unterscheidung gibt, gibt es Richtlinien, wann Sie ein Muster über einem anderen verwenden sollten?

Wenn jemand Anleitung dazu bieten kann, oder zeigen Sie auf Artikel, der die Unterschiede erklärt, würde ich es sehr schätzen.

+0

Wie konnten Sie MVP verwenden, wenn WPF standardmäßig mit dem MVVM-Muster als Silverlight entwickelt wurde? –

+1

mögliches Duplikat von [Was sind MVP und MVC und was ist der Unterschied?] (Http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference) – Mast

Antwort

3

Es kann schwer sein, die Unterschiede zwischen den Mustern grok von in einem bestimmten Rahmen umgesetzt zu einem bestimmten Muster suchen. Dieser Artikel Msdn WPF MVVM Bezug auf Martin Fowlers Originalartikel macht, die ein Muster als allgemeiner Ansatz erklären:

Bereits 2004 veröffentlichte Martin Fowler einen Artikel über ein Muster namens Presentation Model (PM) [...] betrachten MVVM soll eine Spezialisierung des allgemeineren PM-Musters sein, , die für die Plattformen WPF und Silverlight maßgeschneidert ist.

Um verschiedene Muster zu verstehen, ist es nützlich, Martin Fowlers Beschreibungen verschiedener Ansätze zu betrachten. Sein Passive View Muster ist der MVP-Ansatz. Sein Supervising Controller Muster ist der MVC-Ansatz. Sein Presentation Model Muster ist der MVVM-Ansatz. Diese older article nimmt über die Entwicklung solcher Muster.

Es kann auch helfen, Implementierungen in verschiedenen Sprachen zu betrachten. Der Artikel Implementing event-driven GUI patterns using the ZK Java AJAX framework stellt die drei oben erwähnten Muster von Martin Fowler in einem modernen Java-Framework gegenüber. Obwohl es eine andere Sprache und ein anderes Framework als WPF ist, kann es hilfreich sein, das Muster zu sehen und nicht die Implementierung des Musters, um es in einer anderen Sprache zu sehen.