Sorunun birçok cevabı var, ama ikisini açıkça karşılaştıran gerçekten basit bir cevaba ihtiyaç olduğunu hissettim. Bir kullanıcı bir MVP ve MVC uygulamasında bir film adı aradığında yaptığım tartışma şu şekildedir:
Kullanıcı: Tıklayın…
Görünüm : Kim bu? [ MVP | MVC ]
Kullanıcı: Ara düğmesini tıkladım…
Görünüm : Tamam, bir saniye ... [ MVP | MVC ]
( Sunucu | Denetleyiciyi çağıran görünüm …) [ MVP | MVC ]
Görünüm : Hey Sunucu | Denetleyici , bir Kullanıcı ara düğmesini henüz tıkladı, ne yapmalıyım? [ MVP | MVC ]
Sunucu | Kontrolör : Hey Görünüm , bu sayfada herhangi bir arama terimi var mı? [ MVP | MVC ]
Görünüm : Evet,… işte burada… “piyano” [ MVP | MVC ]
Presenter : Thanks View ,… Bu arada Model üzerindeki arama terimini arıyorum , lütfen ona bir ilerleme çubuğu gösterin [ MVP | MVC ]
( Sunucu | Denetleyici Modeli çağırıyor …) [ MVP | MVC ]
Sunucu | Denetleyici : Hey Model , Bu arama terimi için eşleşmeniz mi var ?: “piyano” [ MVP | MVC ]
Model : Hey Sunucu | Kontrolör , kontrol edeyim… [ MVP | MVC ]
( Model film veritabanına sorgu yapıyor…) [ MVP | MVC ]
( Bir süre sonra ... )
-------------- Bu, MVP ve MVC'nin ayrılmaya başladığı yerdir ---------------
Model : Sizin için bir liste buldum, Presenter , işte JSON “[{" name ”:" Piyano Öğretmeni "," yıl ": 2001}, {" name ":" Piyano "," yıl ": 1993} ] ”[ MVP ]
Model : Elde edilen bazı sonuçlar var, Kontrolör . Örneğimde bir alan değişkeni oluşturdum ve sonuçla doldurdum. Adı "searchResultsList" [ MVC ]
( Sunucu | Kontrolör sayesinde Modeli ve geri alır Görünüm ) [ MVP | MVC ]
Sunucu : Beklediğiniz için teşekkürler View , sizin için eşleşen sonuçların bir listesini buldum ve bunları sunulabilir bir biçimde düzenledim: ["Piano Teacher 2001", "Piano 1993"]. Lütfen kullanıcıya dikey bir listede gösterin. Ayrıca lütfen ilerleme çubuğunu şimdi gizleyin [ MVP ]
Kontrolör : Beklediğiniz için teşekkürler View , Model'e arama sorgunuzu sordum . Eşleşen sonuçların bir listesini bulduğunu ve bunları örneğinin içindeki "searchResultsList" adlı bir değişkende sakladığını söylüyor. Oradan alabilirsiniz. Ayrıca lütfen ilerleme çubuğunu şimdi gizleyin [ MVC ]
Görünüm : Çok teşekkür ederim Sunucu [ MVP ]
Görünüm : Teşekkürler "Denetleyici" [ MVC ] (Şimdi Görünüm kendisini sorguluyor: Modelden elde ettiğim sonuçları kullanıcıya nasıl sunmalıyım? Filmin yapım yılı önce mi yoksa son mu olmalı ...? dikey mi yatay mı? ...)
İlgilenmeniz durumunda, burada Github repo eşliğinde uygulama mimari desenleri (MVC, MVP, MVVP, temiz mimari, ...) ile ilgili bir dizi makale yazıyorum . Örnek android için yazılsa bile, temel prensipler herhangi bir ortama uygulanabilir.