Model View Controller desen tüm varyasyonları için farklar (MVP, Passive View, Supervising Controller, Görünüm Modeli, etc.) oldukça ince olur. Her şey veriyi kimin işlediği ve verileri kimden alıyor? Hepsi aynı sorunu çözmek için çalışıyorlar, 'u 'dan başka bir şey'dan ayırmaya çalışıyorlar ve çözümler benzer şekilde hepsini yapıyor.
Simplistic MVC:
+-------+ manipulates data
| Model |<---------------------+
+-------+ |
| |
| gets data |
v |
+------------+ serves data +------+
| Controller |------------->| View |
+------------+ +------+
Simplistic MVP:
+-------+
| Model |
+-------+
|^
| | get/manipulates data
v |
+-----------+ serve data +------+
| Presenter |-------------->| View |
| |<--------------| |
+-----------+ tell changes +------+
Her ikisi de aynı görünebilir o sınıf hiyerarşisinde benzerler:
görsel açıdan düşünmek zaman esnekliği uygulamadaki benzer olduğunu neredeyse pervasızca açıktır. Bununla birlikte fark, verileri görüntüleme ve manipüle etmenin farklı yollarıdır. Kendi MVC'nizi yuvarlarken, nasıl görünmesi gerektiğinden siz sorumlusunuz.
Hepsi bu kadar önemli değil çünkü hepsi kod parçalarını kendi kendine hizmet veren mantıksal varlıklara ayırma ve kod çoğaltmayı azaltma ilkesine dayanıyor. code coupling low'u tuttuğunuz sürece, sonunda güzel bir şekilde çalışmalıdır. Uygulamanızın mimarisiyle dogmatik olarak sonuçlanmak istiyorsanız sadece önemlidir.
Bu konuda pragmatik olun ve ihtiyaçlarınız için en iyi olanı yapın, çünkü yine de bir miksle sonuçlanacaksınız. Görünümün gereksinimine bağlı olarak varyasyonlar arasında geçiş yapmak "oldukça" kolay olmalıdır. SOLID ilkelerini izleyin ve yapmanız gerekenleri iyi yapmalısınız. (Ayrıca bkz. this about SOLID).
Nasıl yapıldığını görmek için MVC veya MVP çerçeveleri olup olmadığını incelemenizi öneririm.
+ 1..always geldi Northwind veritabanı dayanan MVC here iyi bir referans uygulaması yoktur. –
spoike: cevabınız oldukça açıklayıcı .. Teşekkürler. – Sumeet