2009-08-19 12 views
41

Niedawno pracowałem nad projektem .Net WPF, aby zbudować system punktów sprzedaży detalicznej, w którym po raz pierwszy użyłem wzorca MVP. Zajęło mi trochę czasu, aby owinąć głowę wokół zmiany podejścia, ale kiedy to zrobiłem, myślałem, że koncepcja się zakołysała!MVC/MVP/MVVM Co Heck?

Moje pytanie brzmi: jaka jest różnica między MVC, MVP i MVVM? Jeśli istnieje wyraźne rozróżnienie, czy istnieją wytyczne dotyczące tego, kiedy powinieneś stosować jeden wzór na inny?

Jeśli ktokolwiek może zaoferować wskazówki na ten temat lub wskazać artykuł, który wyjaśnia różnice, byłbym bardzo wdzięczny.

+0

W jaki sposób można użyć MVP, jeśli WPF został opracowany domyślnie z wzorcem MVVM jako Silverlight? –

+1

możliwy duplikat [Czym są MVP i MVC i jaka jest różnica?] (Http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference) – Mast

Odpowiedz

3

To może być trudne do grok różnic między wzorami patrząc na danym wzorem realizowanego w danym zakresie. Ten artykuł MSDN WPF MVVM nawiązuje do Martin Ptasznicy oryginalnych artykułów, które wyjaśniają wzór ramach ogólnego podejścia:

w 2004 roku, Martin Fowler opublikował artykuł o nazwie wzór Prezentacja modelu (PM) [...] rozważyć MVVM to specjalizacja bardziej ogólnego wzoru PM, dostosowanego do potrzeb platform WPF i Silverlight.

Aby zrozumieć różne schematy, warto przyjrzeć się opisom różnych podejść Martina Fowlera. Jego wzór Passive View jest podejściem MVP. Jego wzór Supervising Controller jest podejściem MVC. Jego wzór Presentation Model jest podejściem MVVM. Ta older article zajmuje się ewolucją takich wzorów.

Może również pomóc w przejrzeniu implementacji w różnych językach. Artykuł Implementing event-driven GUI patterns using the ZK Java AJAX framework kontrastuje z trzema wzorami Martina Fowlera wspomnianymi powyżej w nowoczesnym środowisku Java. Mimo że jest to inny język i odmienne ramy z WPF, może pomóc zobaczyć wzór, a nie implementację wzoru, aby zobaczyć, jak to się robi w innym języku.