MVP ve MVC nelerdir ve ne fark var?

oy
1k

Ötesine bakıldığında RAD (sürükle-bırak ve yapılandırma) birçok araç aradığınız üç tasarım desenleri rastlamak olasıdır teşvik kullanıcı arabirimleri oluşturmak yolunda Model-View-Controller , Model-View-Presenter ve Model-View-ViewModel . Sorum kendisine üç bölümden oluşur:

  1. Bu desenler hangi sorunlar ele edersiniz?
  2. Nasıl benziyor mu?
  3. Nasıl farklılar?
Oluştur 05/08/2008 saat 11:06
kaynak kullanıcı
Diğer dillerde...                            


25 cevaplar

oy
1k

Model-View-Presenter

In MVP , Sunucu Görünümü için UI iş mantığı içerir. Presenter doğrudan Görüntüle temsilci bütün invokasyonlar. Sunucu ayrıca Görünüm doğrudan ayrılmış ve bir arayüz üzerinden kendisine konuşur edilir. Bu bir birim testinde View alaycı olanak sağlamaktır. MVP biri ortak özellik iki yönlü veri alış-verişi bir sürü var olmasıdır. Örneğin, birisi "Kaydet" düğmesine tıkladığında, Sunucunun "kaydedildiğinde" yöntemine olay işleyicisi delegeler. Kaydetme işlemi tamamlandığında Görünüm kaydetme tamamlandığını görüntüleyebilir, böylece Sunucu daha sonra kendi arayüzü yoluyla Görünüm geri çağıracak.

MVP Web Forms ayrılmış sunum elde edilmesi için bir çok doğal bir model olma eğilimindedir. Nedeni Görüntüle hep ASP.NET çalışma zamanı tarafından ilk yaratılmış olmasıdır. Sen olabilir hem varyantlar hakkında daha fazla bilgi edinmek .

Başlıca iki varyasyon

Pasif Görünüm: Görünüm mümkün olduğunca aptal ve neredeyse sıfır mantığı içerir. Sunucu Görünümü ve Modeline konuşur bir orta adam. Görünüm ve Modeli tamamen birbirinden korunuyor. Model olaylar neden olabilir, ama Sunucu Görünümü güncellemek için onlara abone olur. Pasif görünümünde doğrudan veri, bağlama yerine Görünüm Sunucu verilerini ayarlamak için kullandığı ayarlayıcı özellikleri sunar yoktur. Tüm devlet Görünüm Presenter'da başardı ve edilmez.

  • Pro: Maksimum test edilebilir bir yüzey; Görünüm ve Modelinin temiz ayrılık
  • Con: Kendini bağlama tüm verileri yapıyoruz kadar fazla iş (örneğin tüm ayarlayıcı özellikleri).

Denetleme Denetleyici: Sunucu kullanıcı hareketlerini yönetir. Profil veri bağlama doğrudan Model bağlanır. Bu durumda o kendisine bağlamak, böylece Görünüm Modeli yutturmaya Sunucunun işidir. Sunucu ayrıca basarak bir düğme, navigasyon vb gibi hareketleri için mantığı içerecektir

  • Pro: kod miktarını veri bağlama yararlanarak azaltılır.
  • Con: (çünkü veri bağlama) daha az sınanabilir yüzey vardır ve bu model doğrudan görüşmeler beri daha az kapsülleme Görünümünde var.

Model-View-Controller

In MVC , Kontrolör Görünüm zaman uygulama yükler dahil olmak üzere herhangi bir eylem yanıt olarak gösterilecek olan belirlemekten sorumludur. Bu MVP farklıdır nerede Presenter görüntüleme yoluyla eylemler rota. MVC, görünümünde her eylemin bir eylemle birlikte kontrol cihazına çağrı ile ilişkilidir. Web'de, her eylem yanıt veren bir Kontrolör var olduğu diğer tarafında bir URL'ye bir çağrı içerir. O Denetleyici onun işlem tamamlandıktan sonra, doğru Görünüm dönecektir. Dizi uygulamanın ömrü boyunca bu şekilde devam eder:

    Görünümünde Eylem
        -> Controller Çağrı
        -> Kontrol Mantığı
        -> Kontrolör Görünümü döndürür.

MVC hakkında bir diğer büyük fark Görünüm doğrudan model bağlamak olmamasıdır. Görünüm sadece işler ve tamamen vatansız olduğunu. MVC uygulamalarda Görünüm genellikle kodda herhangi bir mantık olmaz. Görüntüle Presenter ürününün yetki vermezse, bu çağrılırız asla çünkü kesinlikle gerekli olduğu MVP aykırıdır.

Sunum Modeli

Bakmak için bir diğer kalıptır Sunum Modeli deseni. Bu desen de hayır Sunucu yoktur. Bunun yerine görüntüleme Sunum Modeli doğrudan bağlanır. Sunum Modeli View için özel olarak hazırlanmış bir model olduğunu. Bu ayrılık-of-endişeleri ihlali olurdu bu model bir etki alanı modeline koymak asla özelliklerini açığa anlamına gelir. Bu durumda, sunum modeli etki alanı modeli bağlanır ve bu model gelen olaylara abone olabilir. Görünüm ardından Sunum Modeli ve buna göre güncellemeler kendisini gelen olaylara abone. Sunum Modeli görünümü eylemleri çağırmak için kullandığı komutlar maruz bırakabilir. Bu yaklaşımın avantajı PM tamamen görünümü için davranış tüm kapsüller olarak aslında tamamen kod geride kaldırmak olabilir. Bu desen WPF uygulamalarında kullanılmak üzere çok güçlü bir aday olduğu ve ayrıca denir Model-View-ViewModel .

Bir yoktur Sunum Modeli hakkında MSDN makale ve bir bölüm WPF için Kompozit Uygulama Rehberlik hakkında (eski Prizma) Ayrılmış Sunum Patterns

Cevap 19/09/2008 saat 13:46
kaynak kullanıcı

oy
381

Ben alıntı, bir süre önce bu konuda blogged ikisi arasındaki farkı Todd Snyder mükemmel yazı :

İşte desenleri arasındaki temel farklar şunlardır:

MVP Desen

  • Daha fazla gevşek modeline bağlıdır. Sunum görünümüne modeli bağlanmasından sorumludur.
  • Birim test daha kolay görüntüsü etkileşimi bir arayüz üzerinden, çünkü
  • Genellikle birine sunum haritası birine bakın. Karmaşık görünümleri çoklu sunum olabilir.

MVC Pattern

  • Kontrolör davranışlara dayanır ve görünümler arasında paylaşılabilir
  • görüntülemek için görüntülemek belirlenirken sorumlu olabilir

Bu bulabildiğim web üzerinde en iyi açıklamasıdır.

Cevap 05/08/2008 saat 11:21
kaynak kullanıcı

oy
358

Bu durum, bu tasarım desenleri birçok varyantı bir oversimplification, ama bu ikisi arasındaki farklar hakkında düşünmek istiyorum nasıl.

MVC

MVC

MVP

Burada görüntü açıklama girin

Cevap 06/07/2013 saat 23:18
kaynak kullanıcı

oy
202

İşte haberleşme akışını temsil açıklamalarıdır

Burada görüntü açıklama girin

Burada görüntü açıklama girin

Cevap 12/09/2014 saat 21:47
kaynak kullanıcı

oy
147

MVP'dir değil mutlaka View (örneğin Taligent en MVP bakınız) sorumlu olan bir senaryo.
Ben (Pragmatik Programcı) "Bu sadece bir manzara" uyuşmamaktadır gibi bir anti-örgüsü yerine insanlar hala bir desen (Sorumlu Görünüm) olarak vaaz ediyorlar o talihsiz bulmak. "Bu sadece bir manzara" kullanıcıya gösterilen nihai görünümü uygulamasının ikinci plana itilmiştir belirtiyor. Microsoft'un MVP desen çok daha zor ve Görünümler yeniden kullanımını kılan elverişli mazeretler kötü uygulama teşvik Microsoft'un tasarımcısı.

Tam anlamıyla dürüst olmak gerekirse, ben MVC altında yatan endişeleri herhangi MVP uygulanması için de geçerli düşünmek ve farklılıklar neredeyse tamamen semantik bulunmaktadır. Sürece görünümü arasında endişeleri ayrılmasına (diğer bir deyişle verileri görüntüler), düğmeyi (başlatır ve kullanıcı etkileşimi kontrol eden) ve bir model (temel veri ve / veya hizmetler)) daha sonra MVC yararları acheiving aşağıdaki gibidir . Sonra faydaları acheiving varsa kim gerçekten desen MVC, MVP veya Kontrolörü denetlemek olup olmadığını umurunda? Sadece gerçek desen Gerisi onun tatlar farklı olan, MVC olarak kalır.

Düşünün bu kapsamlı bu farklı uygulamaları bir dizi listeler son derece heyecan verici makaleye. Onların hepsi temelde ancak biraz daha farklı aynı şeyi yapıyoruz unutmayın olabilir.

Ben şahsen MVP sadece son zamanlarda bir şey gerçekten MVC veya değil veya Microsoftun Hızlı Uygulama Geliştirme araçları haklı olmadığını iddia anlamsal yobaz arasındaki tartışmaları azaltmak ya çekici bir terim olarak yeniden kullanıma girmiştir düşünüyorum. Benim kitaplarda bu nedenlerden hiçbiri ayrı tasarım deseni olarak varlığını haklı.

Cevap 25/08/2008 saat 22:22
kaynak kullanıcı

oy
85

MVP: görünüm sorumlu.

görünüm, çoğu durumda, onun sunum oluşturur. Sunum modeli ile etkileşim ve bir arayüz üzerinden bir görünümü manipüle edecek. görünüm bazen genellikle bazı arayüz üzerinden, sunucu ile etkileşim. Bu uygulamaya aşağı gelir; görünüm sunucu üzerinde yöntemleri çağırmak için istiyorsun yoksa sunum dinler etkinlik görünümü istiyorsun? Bu aşağı kaynar: görünüm sunucu bilir. sunumu yapan görünüm delegeler.

MVC: kontrol sorumludur.

Kontrolör oluşturulan veya bazı etkinlik / isteğine dayanarak erişilir. Daha sonra kontrol cihazı, uygun bir görünüm oluşturur ve başka görünümünü yapılandırma modeli ile etkileşime girer. Bu aşağı kaynar: kontrolör oluşturur ve görünümü yönetir; görünümü denetleyicisine köle olduğunu. görünüm denetleyici hakkında bilmiyor.

Cevap 06/08/2008 saat 23:51
kaynak kullanıcı

oy
58

Burada görüntü açıklama girin

MVC (Model View Controller)

giriş, birinci Kontrolör değil görünümü yöneliktir. Bu girdi bir sayfayla etkileşime bir kullanıcıdan geliyor olabilir, ama aynı zamanda basit bir tarayıcıya belirli URL girmesini olabilir. Her iki durumda da, bir arabirim onun bir Kontrolörü bazı işlevler başlaması. Denetleyici ve Görünüm arasında birçok bire bir ilişki yoktur. Tek bir kontrolör operasyonu yürütülmektedir dayalı işlenecek farklı görünümleri seçin çekebilecek olmasıdır. Görünüm Denetleyicisi'nden tek yönlü oka dikkat edin. Görünüm denetleyiciye herhangi bilgisine veya referans yok olmasıdır. Denetleyici Modeli geri pas yapar, bu yüzden içine geçirilen Görünüm ve beklenen Modeli arasındaki bilgi yoktur, ancak Kontrolör o kadar hizmet veren.

MVP (Model View Presenter)

giriş View, değil Presenter ile başlar. Görünüm ve ilişkili Presenter arasında bire-bir eşleme yok. Görünüm Presenter bir başvuru tutar. Sunucu ayrıca olaylar adlı tetiklenerek tepki, bu nedenle View onun farkında onun ile ilişkilidir. Sunucu bu model üzerinde gerçekleştirir istenen işlemlere göre Görünüm günceller, ancak Görünüm farkında Model değildir.

Daha fazla bilgi için Referans

Cevap 20/12/2015 saat 02:10
kaynak kullanıcı

oy
31

Ayrıca hatırlatmakta fayda MVP farklı türleri de vardır olmasıdır. Pasif Görünüm ve Denetleme Kontrolörü - Fowler ikiye desen kırdı.

Pasif Görünümü kullanırken, Görünüm tipik underlaying UI Widget'a az ya da çok doğrudan özellikleri haritalama ile ince taneli arabirimini uygular. Örneğin, Adı ve Adresi gibi özelliklere sahip bir ICustomerView olabilir.

Sizin uygulama aşağıdaki gibi görünebilir:

public class CustomerView : ICustomerView
{
    public string Name
    { 
        get { return txtName.Text; }
        set { txtName.Text = value; }
    }
}

Kişisel Sunucu sınıfı modeli konuşmak ve görünüme "harita" olacaktır. Bu yaklaşım "Pasif Görünüm" denir. Fayda görünümü test etmek kolay olduğunu, ve UI platformları (Web, Windows / XAML, vs.) arasında hareket etmek daha kolaydır. Dezavantajı (olan veri bağlama gibi şeyler kaldıraç olamaz ki gerçekten böyle çerçeveler içinde güçlü WPF ve Silverlight ).

MVP ikinci aroma Denetleme cihazdır. Bu durumda sizin Görünüm sonra tekrar UI widget veri sınırlama olan Müşteri adlı bir özelliği, sahip olabilir. Sen senkronizasyon ve görünümü mikro yönetmek ve denetlemek Kontrolör devreye girip compled etkileşim mantığı ile örneğin gerektiğinde yardımcı olabilir düşünmek gerekmez.

MVP (veya birisi belki de ayrı bir desen çağırır) üçüncü "lezzet" Sunum Modeli (veya bazen Model-View-ViewModel anılacaktır). MVP Eğer karşılaştırıldığında M ve bir sınıfa P "birleştirme". Eğer UI widget veri bağlı olduğu müşteri nesne var, ama aynı zamanda vs. "IsButtonEnabled" veya "IsReadOnly", gibi ek UI-spesifik alanları var

Ben UI mimarisine buldum iyi kaynak olarak üzerinde Jeremy Miller tarafından yapılan günlüğü mesajların serisi olduğunu düşünüyorum Build'a İçindekiler Kendi CAB Serisi Masa . O MVP tüm lezzetleri kaplı ve bunları uygulamak için C # kodu gösterdi.

Ben ayrıca Silverlight bağlamında aşkın Model-View-ViewModel desen hakkında blogged var ViewModel desen uygulamak: YouCard Yeniden ziyaret .

Cevap 08/08/2008 saat 06:55
kaynak kullanıcı

oy
31
  • MVP = Model-View-Presenter
  • MVC = Model-View-Controller

    1. Hem sunum kalıpları. Onlar Modeli arasındaki bağımlılıkları ayrı, ekran / web sayfası (Manzara) (Alan nesneleri düşünün) ve UI davranması gerekiyordu nasıl (Sunucu / Controller)
    2. Onlar millet Sunucu / Denetleyici farklı tat bağlı başlatmak, kavramında oldukça benzerdir.
    3. Farklara büyük yazıdır burada . En önemli MVC deseni Görünüm güncellenmesi Model olmasıdır.
Cevap 05/08/2008 saat 11:22
kaynak kullanıcı

oy
15

Bu çerçevelerin her ikisi endişeleri ayırmak amacı - örneğin, bir veri kaynağı (model), uygulama mantığı (veya yararlı bilgi bu verileri dönüm) (Kontrolör / Sunucu) ve ekran kodu (Görünüm) ile etkileşim. Bazı durumlarda modeli aynı zamanda daha yüksek bir seviyede soyutlama içine bir veri kaynağı açmak için kullanılabilir. Buna iyi bir örnek MVC Vitrin projesi .

Bir tartışma vardır burada MVP vs MVC arasındaki farklılıklar bakımından.

ayrımın bir MVC uygulaması geleneksel bir görünüme sahiptir ve kontrol ancak birbirleri ile, bir model ile etkileşim olmasıdır.

MVP tasarımları Sunucu modeline erişmek ve görünümü ile etkileşim var.

Kontrolör hiçbir mantığı olması kastedilmektedir Görünüm doldurmak için Model erişir çünkü ASP.NET MVC Bu tanımlardan tarafından MVP çerçeve, söyledikten (sadece Kontrolörü tarafından sağlanan değişkenleri görüntüler).

Belki, MVP ASP.NET MVC ayrım hakkında bir fikir edinmek kontrol etmek bu MIX sunum Scott Hanselman'ın tarafından.

Cevap 05/08/2008 saat 11:20
kaynak kullanıcı

oy
12

Her iki desenler UI açıdan iş mantığını ayırma, sunum ve iş mantığını ayırmak için çalışıyoruz

Mimari olarak, MVP MVC Ön Denetleyici tabanlı bir yaklaşımdır Sayfa Denetleyici tabanlı bir yaklaşımdır. Yani MVP standart web formu sayfası yaşam döngüsü hemen arkasında kodundan iş mantığı ayıklanması tarafından geliştirilmiştir anlamına gelir. Bir başka deyişle, sayfa bir hizmet http talebidir. Başka bir deyişle, MVP IMHO geliştirme web formu evrimsel türüdür. istek denetleyici sınıfı tarafından yakalanan olur çünkü sayfa yüklenmeden önce diğer taraftan MVC iş mantığı o ise sadece sayfa ( "görünümü") dökülmektedir verilerin işlenmesi kumandanın sonuçta orada ve sonra yürütülen, tamamen oyun değişiklikleri duygusu, (en azından bana) MVC görünüm yönlendirme motoru ile geliştirilmiş MVP denetlenmesi Kontrolör lezzet için çok

Her ikisi de TDD etkinleştirmek ve olumsuz yanları ve üstünlükleri vardır.

IMHO bunlardan birini seçmek için nasıl Karar web geliştirme ASP NET web formu türü yatırım ne kadar zaman tek dayanmalıdır. bir web formları bizzat iyi düşünün olsaydıher MVP öneririm. Böyle bir sayfa yaşam döngüsü olarak şeylerde o kadar rahat hissederiz Eğer vb MVC burada gitmek için bir yol olabilir.

İşte bu konuda biraz daha ayrıntı vermek henüz başka blog yazısı bağlantı var

http://blog.vuscode.com/malovicn/archive/2007/12/18/model-view-presenter-mvp-vs-model-view-controller-mvc.aspx

Cevap 21/09/2008 saat 13:32
kaynak kullanıcı

oy
11

Onlar her biri farklı sorunlara çözüm ve hatta aşağıda böyle bir şey için bir araya kombine edilebilir

Kombine Desen

Orada da burada MVC, MVP ve MVVM tam bir karşılaştırma

Cevap 13/03/2017 saat 05:54
kaynak kullanıcı

oy
9

Bağlayıcı veriler neden alamadım bir şeydir vardır edilebilirliğini azaltmak için. Ben bir görünüm etkili bir bir veya daha fazla veritabanı görünümleri, sağ olarak düşünülebilir ne olabilir off dayanır ki? Farklı görünümlerde sıralar arasındaki bağlantılar olabilir. Alternatif olarak, nesne yönelimli yerine ilişkisel söz edebiliriz, ama bu aslında bir şey değişmez - biz hala bir veya daha fazla farklı veri varlıkları var.

Biz veri yapıları + algoritmalar olarak programlama görüntülemek, o zaman veri yapıları olabildiğince açık hale için en iyi olmazdı ve ardından algoritmalar arasındaki minimum kavramalı, her olabildiğince verilerin kadar küçük bir parça bağlıdır algoritmalar geliştirmek ?

Burada çok Java vari FactoryFactoryFactory düşünce kalıplarını anlamda - biryere özgürlük birden çok görünüm, çoklu modeller, birden fazla derece olmasını istiyorum. O MVC ve MVP ve etajer arkasındaki itici güçtür neredeyse gibi. Ne sıklıkta maliyeti (kesinlikle orada ve bunun için ödeme edilir: Şimdi bana şunu sorayım olan değer bir maliyet)?

Ben de verimli HTTP istekleri arasında durumunu nasıl yönetileceği hiçbir tartışma görüyoruz. değil biz fonksiyonel millet (ve zorunlu spagetti tarafından yapılan hacimli hatalarından) devlet kötüdür ve en aza indirilmelidir (ve kullanıldığında, iyi anlaşılmalıdır) öğrendik?

Ben terimlerin kullanımının çok görmek MVC ve MVP insanlar onlar hakkında eleştirel düşünmek çok kanıt olmadan. Açıkçası, sorun "onlar", ben, ya da her ikisi bir ...

Cevap 28/01/2009 saat 22:11
kaynak kullanıcı

oy
8

Orada sorunun birçok yanıtı vardır, ama bazıları gerçekten basit bir cevabı açıkça ikisini karşılaştırmak için ihtiyaç vardır hissetti. İşte kullanıcı bir MVP ve MVC uygulamasında bir film adı aradığında uydurduğum bir tartışma:

Kullanıcı: tıklayın tıklayın ...

Görünüm : Kim o? [ MVP | MVC ]

Kullanıcı: Sadece arama butonuna tıklandığında ...

Görünüm : Tamam, dur bir saniye .... [ MVP | MVC ]

( Görünüm çağırarak Sunucu | Kontrolörü [...) MVP | MVC ]

Görünüm : Hey Sunucu | Kontrolör , bir kullanıcı sadece ben ne yapayım, arama butonuna tıklandığında? [ MVP | MVC ]

Sunucu | Kontrolör : Hey Görünüm , o sayfadaki herhangi bir arama terimi var mı? [ MVP | MVC ]

Görünüm : Evet ... işte ... “piyano” [olan MVP | MVC ]

Sunucu : Teşekkürler Görüntüle ... Bu arada ben arama terimi altına bakıyorum Modeli , onu / ona bir ilerleme çubuğu [göstermek lütfen MVP | MVC ]

( Sunucu | Kontrolör aradığını Modeli [...) MVP | MVC ]

Sunucu | Denetleyici : Hey Modeli , bu arama terimi ?: “piyano” [herhangi maç var mı MVP | MVC ]

Model : Hey Sunucu | Kontrolör , beni [... kontrol edelim MVP | MVC ]

( Model [... film veritabanına bir sorgu yapıyor) MVP | MVC ]

( Bir süre sonra ... )

MVP ve MVC farklılaşmaya başlar nerede -------------- Bu --------------- olduğunu

Model : Senin için bir liste bulundu Sunucu “{ ": "Piyano Öğretmeni", "yıl": 2001, isim} { "name": "Piyano", "yıl": 1993}, işte burada JSON [" dir “] [ MVP ]

Model : Bazı sonuç mevcut bulunmaktadır Kontrolör . Benim örnek bir alan değişken oluşturulur ve sonucu ile doldurdu. Bu isim "searchResultsList" dir var [ MVC ]

( Sunucu | Kontrolör sayesinde Modeli ve geri alır Görünüm ) [ MVP | MVC ]

Sunucu : Beklediğiniz için teşekkürler Görünümü , sana sonuçlarını eşleşen bir listesini bulundu ve sunuma hazır hale bunları düzenlenmiş: [ "Piyano Öğretmeni 2001", "Piyano 1993"]. Dikey bir listede kullanıcıya gösterin. Ayrıca artık ilerleme çubuğu gizlemek lütfen [ MVP ]

Kontrolör : Teşekkürler bekleyen için Görünüm , ben sordum Modeli arama sorgusu yaklaşık. O eşleşen sonuçların listesini bulundu ve onun örneği içinde "searchResultsList" adlı bir değişkene onları saklanan söylüyor. Oradan alabilirsiniz. Ayrıca artık ilerleme çubuğu gizlemek lütfen [ MVC ]

Görünüm : Çok teşekkür ederim Sunucu [ MVP ]

Görünüm : "Kontrolör" [teşekkürler MVC ] (Şimdi Görüntüle ben aldığım sonuçları sunmalıdır nasıl kendini sorguluyor Model ? ... kullanıcıya filmin yapım yılı ilk veya son gelmelidir it Should dikey veya yatay listede yer? ...)

Eğer ilgi, bir Github repo eşliğinde uygulama mimari desenleri (MVC, MVP, MVVP, temiz mimarisi, ...) ile ilgili bir dizi makale yazma edilmiştir ediyoruz burada . Numune android için yazılmış olsa bile, altında yatan prensipler herhangi bir ortamda uygulanabilir.

Cevap 06/04/2018 saat 13:51
kaynak kullanıcı

oy
8

MVP nedir: android olarak mvp olan mvc sürümü var mı?

arayüz nasıl çalıştığı hakkında her şey ekranda temsil nasıl ayrılır, böylece MVP desen, mantıktan sunum katmanı ayrı sağlar. İdeal MVP desen aynı mantık tamamen farklı ve değiştirilebilir görüşlere sahip olabileceğini ulaşmak olacaktır.

netleştirmek için ilk şey, sunum katmanı için sadece o sorumluydu, MVP mimari bir desen olmadığıdır. Her durumda hiç kullanmadığınız mimarinize için kullanmak her zaman daha iyidir.

MVP bir örnek https://github.com/antoniolg/androidmvp

MVC nedir? MVC mimarisi endişeleri ayrılmasını sağlamak için kullanılabilir eski desen biridir. MVC üç katman, viz, Modeli, View, ve Denetleyici oluşur.

Ekranın varolan her kontrol / Gadget dilsiz kabul edildi ve her kontrol üzerlerinde oluyor kullanıcı etkileşimlerini yönetmek için kendi kontrolüne sahip eşleştirilmiş edildiğinde Klasik MVC bir döneminde yaşamamıştır. 10 gadget'lar varsa, o zaman 10 kontrolörleri var olmaları gerekir. Bu senaryoda, her gadget bir görünüm olarak sayılır. Windows GUI sistemlerinin ortaya çıkışı bu resmi değişti. Kontrol-Kontrolör ilişki eskimiş oldu. Kontroller kullanıcı tarafından başlatılan eylemlere cevap istihbarat kazandı. , Windows dünyasında, görünüm dolayısıyla sadece bir kontrol cihazı için ihtiyaç vardır, tüm kontrolleri / gadgets mevcut olduğu bir yüzeydir. Görünüm olaylarını alacak ve denetimler başka işlem yapmak için yardımcı için ulaşabilir.

Android içinde mvc için örnek kod http://androidexample.com/Use_MVC_Pattern_To_Create_Very_Basic_Shopping_Cart__-_Android_Example/index.php?view=article_discription&aid=116&aaid=138

Her iki arasındaki fark burada mevcuttur http://www.codeproject.com/Articles/288928/Differences-between-MVC-and-MVP-for-Beginners

MVC Model sürümünü gelişmiş çünkü Şimdi benim deneyim itibaren, android tabanlı proje için MVP kullanmalıdır.

Cevap 02/07/2016 saat 07:15
kaynak kullanıcı

oy
8

geliştiriciler IMHO MVP için nokta çok daha başka bir şey daha kabulünün kolaylaştırmak ilgilidir hem desen teknik farklılıklar odaklanma eğilimi gibi MVP ve MVC ve biz her ne kadar her ikisi de kullandık.

Web üzerinde iyi bir arka plan geliştirme tarzını oluşturan zaten gibi bir takımda çalışıyorum Eğer MVC daha MVP tanıtmak çok daha kolaydır. Ben bu senaryoda o MVP hızlı bir kazançtır söyleyebilirim.

Benim deneyim MVP ve sonra MVC MVP web formlarından bir ekip hareketli nispeten kolay olduğunu söylüyor; MVC web formlarından hareket daha zordur.

Burada bir arkadaşım MVP ve MVC hakkında yayınladı yazı dizisi için bir bağlantı bırakın.

http://www.qsoft.be/post/Building-the-MVP-StoreFront-Gutthrie-style.aspx

Cevap 02/01/2009 saat 11:35
kaynak kullanıcı

oy
7

MVP görünümünde çeker ve hazırlar / MVC kontrol görünümünde itme, model verileri çizer ve set ise model verilerini normalleştirir sunum gelen verileri çizer.

MVP size sunucuların birden fazla tipte ve farklı birkaç görüntülemeye çalışan bir tek sunucu ile çalışan tek bir görünüm olabilir.

MVP genellikle Microsoft WPF bağlama çerçevesi veya HTML5 ve Java için çeşitli bağlayıcı çerçeveler gibi bir bağlayıcı çerçeve çeşit kullanır.

Bu çerçeveler, UI / HTML5 / XAML, bir sunum yapan kişiye bir görünüm bağlamak ne zaman bu kadar, görünüm özelliklerinde arar ve onları ve nasıl veri çizmek bilen, sunucu hangi özelliği her UI öğesi ekranların farkındadır bir değer kullanıcı tarafından kullanıcı arayüzünde değiştiğinde bunları ayarlamak için.

örneğin, model bir araba Yani, eğer, o zaman sunucu bir araba sunucu çeşit olduğu görünüme otomobil özelliklerini (yıl, makinesi, koltuklar vs.) ortaya çıkarır. görünümü 'otomobil üreticisi' olarak adlandırılan metin alanı sunum Maker özelliği görüntülemek gerektiğini bilir.

Daha sonra bütün Maker özelliği olmalıdır, görünümüne sunum yapan birçok farklı türde bağlayabilir - bir uçak, tren ya da ne hiç, görünüm umursamıyor olabilir. olursa olsun - - görünüm sunucu verileri çizer sürece anlaşılmış arabirimini uygulayan olarak.

Eğer aşağı şerit, bu bağlayıcı çerçeve, aslında kontrolör :-) var

Ve böylece, sen MVC bir evrimi olarak MVP bakabilirsiniz.

MVC harika ama sorun görünüm başına genellikle kendi denetleyicisi olduğunu. Denetleyici A, Görünüm model B'nin verilerini görüntülemek istediğiniz şimdi ise Görünüm A. alanlarını nasıl ayarlanacağını bilir, sen Denetleyici Bir model B bilmek gerekir, yoksa bir arayüz ile bir nesneyi almak için Denetleyici A ihtiyacım - gibidir sadece bağlamaları olmadan MVP veya Kontrolör B'de UI seti kodunu yeniden yazmak gerekiyor

Sonuç - MVP ve MVC UI desen her iki Decouple, ancak MVP genellikle altında MVC bir bağlama çerçeve kullanır. BÖYLECE MVP MVC daha yüksek bir mimari seviyesi ve MVC üzerinde bir sargı desen yer almaktadır.

Cevap 07/06/2013 saat 22:16
kaynak kullanıcı

oy
6

Benim mütevazi kısa görünüm: MVP küçük pullarla için büyük ölçeklerde içindir ve MVC. MVC, ben bazen V hissetmek ve C yerine doğrudan M'ye bağlanmış bir tek bölünmez bileşenin iki tarafı görülebilir, ve UI kontrolleri ve baz parçacıkları gibi, daha kısa ölçeklerde aşağı giderken bir kaçınılmaz bu düşüyor. bu ayrıntı düzeyinde, MVP küçük mantıklı. tam tersine daha büyük bir terazi gittiğinizde, uygun arabirim sorumlulukların kesin atama ile aynı, daha önemli hale gelir ve burada MVP geliyor.

Platform karakteristikleri MVC uygulamak için daha kolay gibi görünüyor web, MVP fazla olduğu gibi, bileşenleri arasındaki ilişkilerin bir çeşit iyilik Öte yandan, bir başparmak bu ölçek kuralı, çok az ağırlık verebilir.

Cevap 20/02/2013 saat 17:55
kaynak kullanıcı

oy
5

Model-View-Controller

MVC bir yazılım uygulamasının mimarisi için bir kalıptır. Bu modülerlik teşvik üç ayrı bölüme uygulama mantığı ayırmak ve işbirliği ve yeniden kullanım kolaylığı. Iterations.It aşağıdaki bileşenleri içine bir uygulama ayıran için Ayrıca uygulamalar daha esnek ve rahat hale getirir:

  • Modeller taşıma veri ve iş mantığı için
  • Kontrolörler kullanıcı arayüzü ve uygulama kullanımı için
  • Görüntüleme grafik kullanıcı arayüzü nesneleri ve sunum kullanımı için

Bu biraz daha net hale getirmek için, en basit bir alışveriş listesi uygulaması düşünelim. Tek istediğimiz bu hafta satın gereken her öğenin adı, miktar ve fiyat listesidir. Aşağıda biz MVC kullanarak bu işlevselliği bazı uygulamak nasıl açıklayacağız.

Burada görüntü açıklama girin

Model-View-Presenter

  • Model görüntüsü (kullanıcı arabirimi) görüntülenir verilerdir.
  • Görünüşüdür bu verilere göre hareket etmek Sunum veri (modeli) ve rotalar, kullanıcı komutlarını (olaylar) görüntüleyen bir arabirimdir. Görünüm genellikle Sunum bir referans vardır.
  • Sunum (MVC denetleyicisi tarafından oynanan) “orta erkek” ve, görünümü ve modelin her iki başvuru var. Kelime “Modeli” lütfen unutmayın yanıltıcı. Oldukça olmalıdır alır veya Model işleyen iş mantığı . Örneğin: Bir veritabanı tablosundaki Kullanıcıyı depolamak bir veritabanı var ve Görünüm kullanıcıların listesini görüntülemek isterse, o zaman Sunucu Sunucu listesini sorgular yerden (bir DAO gibi) veritabanı iş mantığı bir başvuru olurdu Kullanıcıların.

Basit uygulanmasıyla ilgili bir örnek görmek istiyorsanız lütfen kontrol edin bu github yazı

Böyle işe yarayabilir bir veritabanından kullanıcıların listesini sorgulamak ve görüntülenmesi için bir somut iş akışı: Burada görüntü açıklama girin

Ne fark arasındaki MVC ve MVP desen?

MVC Pattern

  • Kontrolör davranışlara dayanır ve görünümler arasında paylaşılabilir

  • ekrana görüntülemek belirlenirken sorumlu olabilir (Ön Denetleyici Desen)

MVP Desen

  • Daha fazla gevşek modeline bağlıdır. Sunum görünümüne modeli bağlanmasından sorumludur.

  • Birim test daha kolay görüntüsü etkileşimi bir arayüz üzerinden, çünkü

  • Genellikle birine sunum haritası birine bakın. Karmaşık görünümleri çoklu sunum olabilir.

Cevap 29/11/2017 saat 10:14
kaynak kullanıcı

oy
3

MVC birçok versiyonu Bu cevap Smalltalk orijinal MVC hakkındadır vardır. Kısaca, öyle mvp vs mvc imajı

Bu konuşma NYC 2017 droidcon - Mimarlık Bileşenlerinin temizleyin uygulama tasarımı arındırır

Burada görüntü açıklama girin Burada görüntü açıklama girin

Cevap 09/09/2015 saat 02:34
kaynak kullanıcı

oy
0

Orada bu o kısaca sonunda MVC & MVP açıklıyor Amca Bob güzel bir video.

Ne Bence MVP temelde yapacaksın sahip verileri göstermek nasıl yapıldığından endişe ayırmak MVC geliştirilmiş bir versiyonudur olduğunu. Sunucu tür sizin UI iş mantığını içerir ve daha kolay farklı görünümlerde genelinde UI iş mantığını test etmek kılan bir arayüz üzerinden konuşur. MVC hala tutkal katmanlara arabirimleri (sınırları) aracılığıyla konuşur ama UI sunum mantığı empoze etmek böyle bir sınırlama yoktur. Bunun dışında ben gerçekten artık farklılıklar görmüyorum.

Cevap 25/01/2018 saat 21:24
kaynak kullanıcı

oy
0

MVP

MVP Modeli açılımı - görünüm-Presenter. Bu, Microsoft Akıllı İstemci Windows uygulamaları tanıtıldı nerede 2007 başlarında canlandırmaya geldi.

Sunucu modellerinden Görünüm olayları ve iş mantığı bağlayıcı MVP bir denetleyici rolü olarak davranmaktadır.

Görünüm olay bir görünüm arayüzünden Presenter'da uygulanacaktır bağlandığı görülmüştür.

Görünüm Presenter için kullanıcı girdilerine ve ardından delegeler olayları için başlatıcı ve sunum olay bağlantılarını kolları ve modellerinden veri olsun.

Artıları: Görünüm test edilebilirlik herhangi mantık Yüksek seviyeli yalnızca UI yaşıyor

Eksileri: Bit karmaşık ve daha fazla çalışma uygulayan olay bağlamaları

MVC

MVC Model-View-Controller kısaltmasıdır. Kontrolör modelleri oluşturma ve bağlama modelleri ile görüntülerini sorumludur.

Kontrolör başlatıcı ve bu işlemek için görüntülemek karar verir.

Artıları: test edilebilirlik tek sorumluluk prensibi Yüksek düzeyde Vurgu

Eksileri: Kontrolörleri için Bazen çok fazla iş yükü, aynı kumanda birden çok görünüm işlemek çalışırsanız.

Cevap 12/01/2016 saat 04:50
kaynak kullanıcı

oy
-1

En basit cevap görünümü modeli ile nasıl etkileşimde olduğunu. MVP modelinde görünümü güncellenmesinden sorumludur sunum yapan bağlıdır. MVC modeli doğrudan görünümü günceller.

Cevap 16/11/2017 saat 17:32
kaynak kullanıcı

oy
-2

İşte yukarıda yayınlanan iki makine arasındaki en basit el sıkışma anlamak için insanın yetmezliği ve yetersizlik bir toplamıdır. Bunları kuruntulu idealizm en bunları oluşturmak isteyenler kafasında içine kendi yolunu bulduk sizi tüm uyanmak denemek için sağduyu kullanarak açıklayacağız. Ve bu süreçlerin tüm ses kadar aptal, aslında İstemci Makinesine tarafından istenen Nesne Modeli (HTML Dosyası olan) 'dir. İşte tüm aşağı kaynar nasıl.

  1. Bir Köprü basıldığında ve tek isteği Server Müşterinin Machine tarafından gönderilir. Sunucu Client Object Model göndererek Tepki o Request yanıt verir. (Bir "Tepki" olarak basitçe bilinen).
  2. Sunucu (Tam el sıkışması olarak bilinen) Müşteriler Machine bir nesne modeli (HTML dosyası) göndererek cevap verir.
  3. Müşteriler Tarayıcı şimdi, ayrıştırma lexing / tokenizing ve GUI "Görünüm" içine Nesne modeli biçimlendirme dönüştürerek "Görünüm" Render edebilirsiniz.

Artık emekli olabilir, ama Gosh tarafından burada siz savunarak ve tam anlamıyla saçmalıktan tartışıyorlar. Ve dürüstçe olursa olsun dediğimiz iki makine arasında bir Tokalaşma tek isteği, Nesne "Modeli" ve "Görünüm" Rendering nihayet Müşteriler Tarayıcı tek Tepkisi dışında bir şey olamaz.

Ve kapanış, bir görüntüleme el sıkışması mevcut değildir. Nesne Modeli Üç veya daha fazla nesne modelleri ile GUI Widget Setleri ve Eval Yöntemleri dönüştürmek Tarayıcı için sadece İşaretleme olduğunu. HTML, CSS ve JavaScript. Ve ne olursa hemen herkes söyleyebiliriz nasıl bir Sunucu sıradan bir şey At Gübre olduğunu yapar.

"Sunucu" değil "Kontrolör" Bir Directer ve sadece bir nesne "Modeli" Yanıtını göndererek Yanıtı yönlendirir. (Muhtemelen Kontrolör olurdu) Müşterinin Tarayıcı sonra Sunucu bununla ilgisi yok Nesne "Modeli" kısmından "Görünüm" oluşturur. Bilgisayarınız dili hiç model nesne içine almak ne de temsilci olamaz. öyle Bütün bir Biçimlendirme yaratıcıdır.

Bütün karışıklık basit bir istemci tarafı Tarayıcı "Modeli" (ilk sırayla Modeli olarak gönderilen) "Görünüm" veya CMV veya MCV işlemek ve değiştirmek olamaz ayrıştırır "Kontrolör" dir. Ama sadece bir istek yanıtı nesne modeli diyoruz ve Görünüm veya RRMV Render olabilir.

Cevap 31/12/2018 saat 02:10
kaynak kullanıcı

oy
-2

Birçok insan sırasıyla MVC ve MVP'deki Kontrolör ve Sunum arasındaki fark tam olarak ne olduğunu bilmiyor.

onun basit bir denklem nerede

MVC Görünüm = Görüntüleme ve MVP Sunucu

MVP Model = Kontrol ve MVC Model

Daha fazla bilgi için buraya bakabilirsiniz http://includeblogh.blogspot.com.eg/2016/07/the-difference-and-relationship-between.html

Cevap 31/07/2017 saat 10:13
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more