Jakie są MVP i MVC i jaka jest różnica?

głosy
1k

Kiedy patrzy poza RAD (drag-drop i skonfigurować) sposób budowania interfejsów użytkownika, że wiele narzędzi zachęcających jest prawdopodobne, aby natknąć trzech wzorców projektowych zwanych Model-View-Controller , Model-View-Presenter i Model-View-ViewModel . Moje pytanie ma trzy części do niego:

  1. Jakie kwestie te wzory zająć?
  2. Jak są one podobne?
  3. Czym się różnią?
Utwórz 05/08/2008 o 11:06
źródło użytkownik
W innych językach...                            


25 odpowiedzi

głosy
1k

Model-View-Presenter

W MVP , Presenter zawiera logikę biznesową UI dla widoku. Wszystkie wywołania z widoku delegata bezpośrednio do rzutnika. Presenter jest również oddzielona bezpośrednio z widokiem i mówi do niej za pośrednictwem interfejsu. Pozwala to na wyśmianie z widokiem w badanej jednostki. Jeden wspólny atrybut MVP jest to, że nie musi być dużo dwukierunkowy dyspozytorni. Na przykład, gdy ktoś kliknie przycisk „Zapisz”, obsługi zdarzeń deleguje do „OnSave” metody prezentera. Po zakończeniu oszczędzania, Presenter będzie następnie oddzwonić widok przez interfejs tak, że widok może wyświetlać, że oszczędzania została zakończona.

MVP wydaje się być bardzo naturalny wzór dla osiągnięcia oddzielone prezentacji w Web Forms. Powodem jest to, że widok jest zawsze tworzone najpierw przez program ASP.NET. Możesz dowiedzieć się więcej na temat obu wariantów .

Dwa podstawowe warianty

Zobacz pasywny: Widok jest tak głupi, jak to możliwe i zawiera prawie zero logiki. Presenter jest środkowy człowiek, który mówi do widoku i modelu. The View i model są całkowicie osłonięte od siebie. Model może podnieść zdarzenia, ale Presenter subskrybuje nich za aktualizację View. W Passive View nie ma żadnych danych bezpośrednie wiązanie, zamiast Zobacz eksponuje właściwości setter którego używa do Presenter zestaw danych. Wszystko stan jest zarządzany w Presenter i nie widoku.

  • Pro: maksymalna powierzchnia testowalność; czyste oddzielenie View i model
  • Con: więcej pracy (na przykład wszystkie właściwości setter) jak robisz wszystkie wiążące się dane.

Nadzorowanie kontroler: Presenter obsługuje gesty użytkownika. Widok wiąże się bezpośrednio z modelu wiązania danych. W tym przypadku jest to praca prezentera, aby przejść od modelu do widoku tak, że może on wiązać się z nią. Prezenter będzie również zawierać logikę gestów, takich jak naciśnięcie przycisku, nawigacji, itd.

  • Pro: wykorzystując Databinding ilość kodu jest zmniejszona.
  • Con: nie mniej sprawdzalne powierzchni (z powodu wiązania danych), a tam mniej hermetyzacji w widoku ponieważ mówi bezpośrednio do modelu.

Model-View-Controller

W MVC , kontroler jest odpowiedzialny za określenie, które View wyświetlany w odpowiedzi na jakiekolwiek działania w tym podczas ładowania aplikacji. Różni się to od MVP gdzie trasa działania poprzez widok prezenter. W MVC, każde działanie w Widoku koreluje z wezwaniem do kontrolera wraz z akcji. W internecie każda akcja pociąga za sobą wezwanie do adresu URL z drugiej strony, z których nie jest kontrolerem, który odpowiada. Raz, że kontroler zakończył przetwarzanie, zwróci poprawną View. Sekwencja kontynuuje w ten sposób przez cały okres stosowania:

    Akcja w Widoku
        -> Zadzwoń i sterownika
        -> Logic Controller
        -> Kontroler zwraca View.

Jedna inna duża różnica o MVC jest, że widok nie wiążą się bezpośrednio z modelu. Widok po prostu powoduje, i jest całkowicie bezstanowy. W implementacji MVC View zwykle nie będzie miał żadnego logiki w kodzie tyłu. Jest to sprzeczne z MVP, gdzie jest to absolutnie konieczne, ponieważ, jeśli widok nie delegować do prezentera, to nigdy nie będzie sprawdzony.

Prezentacja modelu

Jeden inny wzór, aby spojrzeć na to prezentacja modelu wzór. W tej strukturze nie ma prezentera. Zamiast Zobacz wiąże się bezpośrednio do prezentacji modelu. Prezentacja modelu jest model wykonany specjalnie dla widoku. Oznacza to ten model może narazić właściwości, które nigdy nie będą wprowadzone na modelu domeny jak byłoby to naruszenie separacji-of-obaw. W tym przypadku, Prezentacja modelu wiąże się z modelu domeny i może zapisać się do zdarzeń pochodzących z tego modelu. Widok następnie subskrybuje zdarzeń pochodzących z prezentacji modelu i aktualizuje się odpowiednio. Prezentacja modelu mogą wystawiać polecenia którego widok używa do wywoływania działań. Zaletą tego podejścia jest to, że można zasadniczo usunąć opóźnieniem kodu zupełnie jak PM całkowicie obudowuje wszystkie zachowania dla widoku. Ten wzorzec jest bardzo silna kandydat do użycia w aplikacji WPF i jest również nazywany Model-View-ViewModel .

Jest artykuł MSDN o Prezentacja modelu i sekcję w Composite Application Poradniku dla WPF (dawny Prism) o Rozdzielone Patterns prezentacyjne

Odpowiedział 19/09/2008 o 13:46
źródło użytkownik

głosy
381

I napisał o tym jakiś czas temu, powołując się na Todda Snydera doskonałą postu na różnicy między nimi :

Oto najważniejsze różnice pomiędzy wzorami:

Wzorzec MVP

  • Widok jest bardziej luźno sprzężona modelu. Prezenter jest odpowiedzialna za wiązanie modelu do widoku.
  • Łatwiej badanej jednostki, ponieważ oddziaływanie z widzenia jest poprzez interfejs
  • Zazwyczaj zobaczyć na mapie prezenter jeden do jednego. Złożone poglądy mogą mieć wielo prezenterów.

Wzorzec MVC

  • Kontroler są oparte na zachowaniach i mogą być współużytkowane przez poglądów
  • Mogą być odpowiedzialne za określenie, które zobaczyć, aby wyświetlić

Jest to najlepsze wyjaśnienie w internecie nie mogłem znaleźć.

Odpowiedział 05/08/2008 o 11:21
źródło użytkownik

głosy
358

Jest to uproszczenie z wielu wariantów tych wzorców projektowych, ale to jest jak lubię myśleć o różnicach między nimi.

MVC

MVC

MVP

wprowadzić opis obrazu tutaj

Odpowiedział 06/07/2013 o 23:18
źródło użytkownik

głosy
202

Oto ilustracje, które reprezentują przepływ komunikacyjny

wprowadzić opis obrazu tutaj

wprowadzić opis obrazu tutaj

Odpowiedział 12/09/2014 o 21:47
źródło użytkownik

głosy
147

MVP to nie koniecznie scenariusz gdzie widok jest odpowiedzialny za (patrz Taligent za MVP na przykład).
Uważam, że to niefortunne, że ludzie są nadal głosząc to jako wzorzec (Wyświetl odpowiedzialnej), w przeciwieństwie do anty-wzorca, gdyż zaprzecza „To tylko widok” (pragmatyczną Programmer). „To jest po prostu widok” stwierdza, że ostateczne widok pokazany użytkownikowi jest kwestią drugorzędną aplikacji. MVP wzór Microsoftu powoduje ponowne wykorzystanie poglądów dużo trudniejsze i wygodnie wymówek projektantów Microsoftu zachęcające złe praktyki.

Aby być całkowicie szczery, myślę, że obawy leżące u podstaw MVC prawdziwa dla dowolnej implementacji MVP i różnice są prawie całkowicie semantyczny. Tak długo, jak jesteś po separacji obawy między widoku (który wyświetla dane), regulator (który Zainicjowanie i kontroluje działania użytkownika) i model (podstawowymi danymi i / lub usługi)) to jesteś acheiving korzyści z MVC , Jeśli acheiving korzyści to kto naprawdę troszczy się, czy wzór jest MVC, MVP lub nadzorującej kontroler? Jedyny prawdziwy wzór pozostaje MVC, reszta to po prostu odmienne smaki niego.

Rozważmy to bardzo ekscytujące artykuł, który wyczerpująco wymienia szereg tych różnych implementacjach. Można zauważyć, że wszystkie one są w zasadzie robi to samo, ale nieco inaczej.

Osobiście uważam, że MVP dopiero niedawno ponownie wprowadzony jako chwytliwy termin albo zmniejszenia argumentów semantycznych między bigotów, którzy twierdzą, czy coś jest naprawdę MVC lub nie do uzasadnienia lub narzędzi programistycznych Microsoftu Rapid Application. Żaden z tych powodów w moich książkach uzasadnić swoje istnienie jako oddzielnego wzorca projektowego.

Odpowiedział 25/08/2008 o 22:22
źródło użytkownik

głosy
85

MVP: widok jest odpowiedzialny.

Widok, w większości przypadków, tworzy swoją prezentera. Prezenter będzie współdziałać z modelu i manipulować widok przez interfejs. Widok czasami interakcji z prezenterem, zwykle przez jakiś interfejs. To wszystko sprowadza się do realizacji; chcesz widok wywołać metody na prezentera lub chcesz mieć pogląd na wydarzenia prezenter słucha? To sprowadza się do tego: Widok wie o prezentera. Widoku delegaci do prezentera.

MVC: kontroler jest odpowiedzialny.

Kontroler jest tworzony w oparciu o dostępne lub jakiegoś zdarzenia / zamówienie. Następnie sterownik tworzy odpowiedni widok i współdziała z modelu do dalszych konfiguracji widoku. To sprowadza się do: kontroler tworzy i zarządza pogląd; widok jest niewolnikiem kontrolera. Widok nie wie o kontrolerze.

Odpowiedział 06/08/2008 o 23:51
źródło użytkownik

głosy
58

wprowadzić opis obrazu tutaj

MVC (Model-View-Controller)

Wejście jest skierowane na pierwszy kontroler, a nie w widoku. Że wejście może być pochodzących z interakcji użytkownika ze stroną, ale może to być również z wpisując konkretny adres URL w przeglądarce. W obu przypadkach jest to kontroler, który jest połączony z inauguracją pewną funkcjonalność. Istnieje związek wiele do jednego między kontrolerem a View. To dlatego, że jeden kontroler może wybrać różne poglądy mają być świadczone na podstawie operacji wykonywane. Należy zwrócić uwagę na jedną stronę strzałki z kontrolera do widoku. To dlatego, że widok nie posiada żadnej wiedzy lub odniesienie do kontrolera. Kontroler ma przejść z powrotem do modelu, więc nie ma wiedzy między View i oczekiwanego modelu były przekazywane do niego, ale nie kontroler obsługujących go.

MVP (Model View Presenter)

Wejście rozpoczyna się z poglądem, a nie Presenter. Istnieje odwzorowanie jeden do jednego między View i powiązanej Presenter. The View posiada odniesienie do Presenter. Presenter jest również reagowanie na zdarzenia są wyzwalane z widzenia, więc jego świadomość związana z jego widokiem. Presenter aktualizuje widok na podstawie żądanych działań, to wykonuje się na modelu, ale widok nie jest Modelem świadomy.

Aby uzyskać więcej Referencje

Odpowiedział 20/12/2015 o 02:10
źródło użytkownik

głosy
31

Warto również pamiętać, że istnieją różne rodzaje MVP, jak również. Fowler został uszkodzony wzorzec do dwóch - Widok pasywny i nadzorowanie Controller.

Podczas korzystania pasywny View, Państwa zdaniem typowo zaimplementować interfejs drobnoziarnistą o właściwościach mapowania mniej lub bardziej bezpośrednio pod nią widget UI. Na przykład, możesz mieć ICustomerView o właściwościach takich jak nazwa i adres.

Implementacja może wyglądać następująco:

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

Klasa Prezenter będzie rozmawiać z modelem i „map” to do widzenia. Takie podejście nazywa się „Passive View”. Zaletą jest to, że widok jest łatwy do testowania, a łatwiej jest poruszać się między platformami UI (Web, Windows / XAML, itd.). Wadą jest to, że nie można wykorzystać rzeczy jak wiązania z danymi (co jest naprawdę potężny w ramach takich jak WPF i Silverlight ).

Drugi smak MVP jest Nadzorowanie Controller. W takim przypadku Państwa zdanie może mieć właściwość o nazwie klienta, który znowu jest z danymi do widżetów UI. Nie musisz myśleć o synchronizacji i mikro-zarządzania widok i kontroler nadzorujący może wkroczyć i pomóc w razie potrzeby, na przykład z compled logiki interakcji.

Trzeci „smak” z MVP (lub ktoś może nazwać to odrębny wzorzec) jest prezentacja modelu (lub czasami określane Model-View-ViewModel). W porównaniu z MVP ty „scalić” M oraz P do jednej klasy. Masz swój obiekt klienta, który widgety UI jest związany dane, ale trzeba również dodatkowe pola UI-Spesific jak „IsButtonEnabled” lub „IsReadOnly” itp

Myślę, że najlepszym źródłem Znalazłem architektury UI jest seria blogach wykonanych przez Jeremy Miller na co Build własną CAB Series Spis treści . Pokrył wszystkie smaki MVP i pokazał kod C #, aby je realizować.

Mam również napisał o wzorca Model-View-ViewModel w kontekście Silverlight nad na YouCard Ponownie odwiedził: wdrożenie wzoru ViewModel .

Odpowiedział 08/08/2008 o 06:55
źródło użytkownik

głosy
31
  • MVP = Model-View-Presenter
  • MVC = Model-View-Controller

    1. Oba wzory prezentacji. Oni oddzielenia zależności między Modelu (zespoły obiektów domeny), ekran / stronę internetową (widoku), oraz w jaki sposób UI ma się zachowywać (Prezenter / Controller)
    2. Są one dość podobne w koncepcji, ludzie zainicjować Prezenter / Kontroler różnie w zależności od smaku.
    3. Świetny artykuł na temat różnic jest tutaj . Najbardziej godne uwagi jest to, że wzorzec MVC ma Modelu uaktualniające View.
Odpowiedział 05/08/2008 o 11:22
źródło użytkownik

głosy
15

Oba te ramy mają na celu oddzielenia obawy - na przykład interakcji ze źródłem danych (modelu), logiki aplikacji (lub włączenie tych danych w użyteczne informacje) (Controller / Presenter) i kod wyświetlacza (Widok). W niektórych przypadkach model może być również używany do włączania źródła danych na wyższym poziomie abstrakcji, jak również. Dobrym tego przykładem jest projekt MVC Storefront .

Jest dyskusja tutaj dotyczące różnic między MVC vs MVP.

Rozróżnienie dokonane jest to, że w aplikacji MVC tradycyjnie ma widok i kontroler interakcji z modelem, ale nie ze sobą.

MVP Presenter projekty mają dostępu do modelu i interakcji z widzenia.

Mimo, że ASP.NET MVC jest przez tych definicji frameworkiem MVP ponieważ kontroler dostępu modelu, aby wypełnić widok, który ma mieć żadnej logiki (tylko wyświetla zmienne dostarczone przez regulator).

Być może zorientować się rozróżnienia ASP.NET MVC z MVP, sprawdź tę prezentację MIX Scott Hanselman.

Odpowiedział 05/08/2008 o 11:20
źródło użytkownik

głosy
12

Oba wzory próbując oddzielić prezentacji i logiki biznesowej, oddzielenie logiki biznesowej od aspektów UI

Architektonicznie jest MVP Kontroler Page podejście oparte gdzie MVC jest Front Controller podejście oparte. Oznacza to, że w MVP cykl standardowy formularz internetowy strona życia jest tylko wzmocniona przez ekstrakcję logiki biznesowej od kod. Innymi słowy, strona jest żądanie http jeden serwis. Innymi słowy, MVP IMHO to forma internetowej ewolucyjny typ akcesorium. MVC na kolei zmienia całkowicie grę, ponieważ żądanie zostaje przechwycony przez klasę kontrolera zanim strona zostanie załadowana, logika biznesowa jest wykonywany tam i wtedy na końcowy wynik kontrolera przetwarzania danych tylko po cenach dumpingowych na stronie ( „View”), w które poczucie, wygląda MVC (przynajmniej dla mnie) dużo do smaku nadzorująca kontroler MVP wzmocnionej z silnikiem routingu

Obaj umożliwić TDD i mają wady i upsides.

Decyzja o tym, jak wybrać jedną z nich IMHO powinno być oparte na ile czasu jeden zainwestował w ASP NET typu Web Form rozwoju internetowej. Jeśli ktoś uważa się dobrze w formularzach internetowych, chciałbym zaproponować MVP. Jeśli ktoś nie czuje się tak komfortowo w rzeczach takich jak cykl życia strona itp MVC może być sposobem, aby przejść tutaj.

Oto jeszcze inny link blogu daje trochę więcej szczegółów na ten temat

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

Odpowiedział 21/09/2008 o 13:32
źródło użytkownik

głosy
11

Każdy z nich rozwiązuje różne problemy, a nawet mogą być łączone razem, aby mieć coś jak poniżej

Połączone Wzór

Istnieje również kompletne porównanie MVC, MVP i MVVM tutaj

Odpowiedział 13/03/2017 o 05:54
źródło użytkownik

głosy
9

Coś nie rozumiem dlaczego jest wiążące dane ma zmniejszyć testowalności. To znaczy, widok jest skutecznie opiera się, co może być traktowane jako jeden lub więcej widoków bazy danych, prawda? Nie może być połączenia między rzędami w różnych widokach. Alternatywnie, możemy mówić obiektowego zamiast relacyjny, ale to rzeczywiście niczego nie zmienia - nadal mamy jeden lub więcej odrębnych podmiotów danych.

Jeśli postrzegamy jako programowanie struktur danych + algorytmów, to nie byłoby najlepiej, aby mieć struktury danych wyraźnie, jak to możliwe, a następnie opracowanie algorytmów, które są zależne od siebie jako małego kawałka danych, jak to możliwe, z minimalnym sprzężenia między algorytmów ?

Wyczuwam bardzo Java-esque wzorce myślowe FactoryFactoryFactory tutaj - chcemy mieć wiele widoków, wiele modeli, wiele stopni swobody w każdym miejscu. To prawie tak, że jest siłą napędową MVC i MVP i etażerka. Teraz pozwól mi zapytać: jak często jest koszt płacisz za to (i jest to zdecydowanie jest koszt) warto?

Ja też nie widzę dyskusję o tym, jak efektywnie zarządzać stanu między żądań HTTP. Nie dowiedzieliśmy się od ludzi funkcjonalnych (i obszernych błędów popełnianych nadrzędnymi spaghetti) to państwo jest zła i powinna być ograniczona do minimum (i jeśli jest stosowany, powinien być dobrze rozumianego)?

Widzę dużo wykorzystania warunków MVC i MVP bez większych dowodów, że ludzie myślą o nich krytycznie. Oczywiste jest, że problem jest „ich”, ja, albo oba ...

Odpowiedział 28/01/2009 o 22:11
źródło użytkownik

głosy
8

Istnieje wiele odpowiedzi na pytanie, ale czułem, że jest zapotrzebowanie na niektóre naprawdę prosta odpowiedź wyraźnie porównując dwa. Poniżej znajduje się omówienie wymyśliłem, gdy użytkownik wyszukuje nazwy filmu w aplikacji MVP i MVC:

Użytkownik: kliknij kliknij ...

Zobacz : Kto to jest? [ MVP | MVC ]

Użytkownik: Właśnie kliknięciu przycisku Szukaj ...

Zobacz : Ok, poczekaj chwilkę .... [ MVP | MVC ]

( Zobacz wywołanie Presenter | Controller ...) [ MVP | MVC ]

Zobacz : Hey Prezenter | Controller , użytkownik musi tylko kliknąć na przycisk wyszukiwania, co mam zrobić? [ MVP | MVC ]

prezenter | Kontroler : Hey Zobacz , czy jest jakiś termin wyszukiwania na tej stronie? [ MVP | MVC ]

Zobacz : Tak ... to jest tutaj ... „piano” [ MVP | MVC ]

Prezenter : Dzięki Zobacz ... tymczasem szukam się wyszukiwany termin na modelu , proszę pokazać mu / jej pasek postępu [ MVP | MVC ]

( Prezenter | Kontroler jest wywołanie model ...) [ MVP | MVC ]

prezenter | Kontroler : Hey modelu , Czy masz jakieś dopasowanie dla tego hasła ?: „piano” [ MVP | MVC ]

Model : Hey Prezenter | Kontroler , pozwól mi sprawdzić ... [ MVP | MVC ]

( Model robi zapytanie do bazy filmowej ...) [ MVP | MVC ]

( Po chwili ... )

-------------- To gdzie MVP i MVC zaczynają się rozchodzić ---------------

Model : Znalazłem listę dla ciebie, Presenter , tutaj jest w JSON „[{ "name": "Pianistka", "rok": 2001}, { "name": "Piano", "rok": 1993} ]”[ MVP ]

Model : Jest jakiś wynik dostępny Controller . Stworzyłem zmiennego pola w moim przypadku i napełnił ją z wyniku. To nazwisko jest „searchResultsList” [ MVC ]

( Prezenter | Controller dzięki modelu i trafia z powrotem do widoku ) [ MVP | MVC ]

Prezenter : Dzięki za czekał Zobacz , znalazłem listę pasujących wyników dla ciebie i układa się je w prezencji formacie: [ „Pianistka 2001”, „Piano 1993”]. Proszę pokazać go do użytkownika na liście pionowej. Także proszę ukryć pasek postępu teraz [ MVP ]

Kontroler : Dzięki za czekał View , poprosiłem model o zapytaniu. Mówi ona znalazła listę pasujących wyników i przechowywać je w zmiennej o nazwie „searchResultsList” wewnątrz jej instancji. Można go pobrać stąd. Także proszę ukryć pasek postępu teraz [ MVC ]

Zobacz : Dziękuję bardzo Presenter [ MVP ]

Zobacz : Dziękuję „Kontroler” [ MVC ] (obecnie pogląd kwestionuje się: W jaki sposób należy przedstawić wyniki dostaję od modelu ? Dla użytkownika Jeżeli rok produkcji filmu na pierwszym lub ostatnim ... Powinna? być na liście pionowej lub poziomej? ...)

W przypadku jesteś zainteresowany, ja pisze serię artykułów dotyczących aplikacji wzorców architektonicznych (MVC, MVP, MVVP, czyste architektura, ...) towarzyszy GitHub repo tutaj . Mimo, że próbka jest napisany dla systemu Android, podstawowe zasady mogą być stosowane do każdego medium.

Odpowiedział 06/04/2018 o 13:51
źródło użytkownik

głosy
8

W android jest wersja MVC, który jest MVP: Jaka jest MVP?

Wzór MVP umożliwia oddzielenie warstwy prezentacji od logiki, tak, że wszystko o tym, jak działa interfejs jest oddzielony od tego, jak my reprezentuje ją na ekranie. Idealnie byłoby osiągnąć wzorzec MVP że sama logika może mieć zupełnie inne poglądy i wymienne.

Pierwszą rzeczą do wyjaśnienia jest to, że nie jest MVP wzorzec architektoniczny, jest odpowiedzialny tylko dla warstwy prezentacji. W każdym przypadku jest to zawsze lepiej wykorzystać go do swojej architekturze, która nie używając go w ogóle.

Przykładem MVP jest https://github.com/antoniolg/androidmvp

Co to jest MVC? MVC architektura jest jednym z najstarszych wzorów dostępnych dla osiągnięcia separacji obawy. MVC składa się z trzech warstw, a mianowicie, model, widok i kontroler.

Klasyczny MVC istniał w czasie, gdy każda kontrola / gadżet, który istniał w ekranie uznano za głupi i każda kontrola jest sparowane z własnym kontrolerem zarządzać interakcji użytkownika dzieje się na nich. Więc jeśli istnieje 10 gadżetów, a następnie 10 Kontrolerzy muszą istnieć. W tym scenariuszu, każdy gadżet jest liczony jako widok. Pojawienie się systemów GUI Windows, zmieniły ten obraz. Zależność sterowania kontroler stał się nieaktualny. Kontrole zyskały inteligencję w odpowiedzi na działania inicjowane przez użytkownika. W świecie Windows, widok jest powierzchnia, na której występują wszystkie elementy sterujące / gadżety, stąd istnieje potrzeba tylko jednego kontrolera. Widok może odbierać zdarzenia i dotrzeć do kontrolerów pomóc zrobić dalsze przetwarzanie.

Przykładowy kod dla MVC w Android http://androidexample.com/Use_MVC_Pattern_To_Create_Very_Basic_Shopping_Cart__-_Android_Example/index.php?view=article_discription&aid=116&aaid=138

Różnica między obu jest dostępny tutaj http://www.codeproject.com/Articles/288928/Differences-between-MVC-and-MVP-for-Beginners

Z mojego doświadczenia teraz trzeba użyć MVP dla projektu Android oparty ponieważ udoskonalona wersja modelu MVC.

Odpowiedział 02/07/2016 o 07:15
źródło użytkownik

głosy
8

Użyłem zarówno MVP i MVC i chociaż my jako programiści skupiają się na różnicach technicznych obu wzorów punkt dla MVP w IMHO jest dużo bardziej związanych łatwość przyjęcia niż cokolwiek innego.

Jeśli pracuję w zespole, który już jako dobre tło w internecie tworzy styl rozwoju to znacznie łatwiejsze do wprowadzenia niż MVP MVC. Powiedziałbym, że MVP w tym scenariuszu jest szybkie zwycięstwo.

Moje doświadczenie mówi mi, że przeniesienie zespołu z formularzy internetowych do MVP, a następnie z MVP MVC jest stosunkowo łatwe; przejście z formularzy internetowych do MVC jest trudniejsze.

Zostawiam tutaj link do serii artykułów moja przyjaciółka ma publikowanych o MVP i MVC.

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

Odpowiedział 02/01/2009 o 11:35
źródło użytkownik

głosy
7

W MVP widok czerpie dane z prezenterem, który przygotowuje i sporządza / normalizuje dane z modelu, podczas gdy w MVC kontroler pobiera dane z modelu i ustawić, by popchnąć w widoku.

W MVP można mieć pojedynczy widok pracy z wieloma typami prezenterów i jednym prezenter pracy z różnymi wielu widoków.

MVP zwykle wykorzystuje jakieś wiążące ramy, takie jak Microsoft WPF wiążących ram lub różnych wiążących ram dla HTML5 i Java.

W tych ramach, UI / HTML5 / XAML, jest świadomy tego, co właściwość prezentera każdy element wyświetlaczy UI, więc gdy wiążą się widok na prezentera, widok wygląda na właściwości i wie jak wyciągnąć dane z nich i jak ustawić je, gdy wartość jest zmieniana w interfejsie użytkownika przez użytkownika.

Tak więc, jeśli na przykład model to samochód, to prezenter jest jakiś prezenter samochodowym, eksponuje właściwości samochodu (rok, kawy, fotele, etc.) widoku. Widok wie, że pole tekstowe o nazwie „producent samochodów” wymaga, aby wyświetlić właściwość prezenter Maker.

Następnie można powiązać do widoku wielu różnych rodzajów prezenter, wszystko musi mieć właściwość Maker - może być z samolotem, pociągiem lub co kiedykolwiek, widok nie obchodzi. Widok czerpie dane z rzutnika - nie ma znaczenia, który - o ile realizuje uzgodniony interfejs.

Ramy te wiązania, jeśli rozebrać go na dół, to rzeczywiście :-) kontroler

I tak, można spojrzeć na MVP jako ewolucja MVC.

MVC jest wielki, ale problemem jest to, że zazwyczaj jego kontroler per view. Kontroler wie jak ustawić pola widzenia A. Jeśli teraz chcesz Widok A do wyświetlania danych z modelu B, trzeba wiedzieć regulator A do modelu B, albo trzeba sterowniku, aby otrzymać przedmiot z interfejsem - co jest jak MVP tylko bez wiązań, czy trzeba przepisać kod zestaw UI kontroler B.

Wnioski - MVP i MVC są zarówno DECOUPLE wzorców UI, ale MVP zwykle wykorzystuje ramy powiązań, która jest MVC pod spodem. TAK MVP znajduje się na wyższym poziomie niż architektonicznego MVC wzór owijki powyżej MVC.

Odpowiedział 07/06/2013 o 22:16
źródło użytkownik

głosy
6

Moim skromnym krótki widok: MVP jest dla dużych skalach i MVC dla malutkich łusek. Z MVC, ja kiedyś poczuć V i C może być postrzegany jako dwie strony pojedynczego składnika niepodzielny raczej bezpośrednio związana z M, a jeden nieuchronnie spada do tego, gdy schodząc do krótszych skalach, jak kontrole UI i widgetów bazowych. Na tym poziomie szczegółowości, MVP ma sensu. Kiedy jeden przeciwnie przejść do większych skalach, właściwy interfejs staje się ważniejsza, to samo z jednoznacznego przypisania odpowiedzialności, a tu przychodzi MVP.

Z drugiej strony, zasada ta skala kciuk, może ważyć bardzo mało kiedy cechy platformy sprzyja jakieś relacje między składnikami, jak w internecie, gdzie wydaje się być łatwiejsze do wdrożenia MVC ponad MVP.

Odpowiedział 20/02/2013 o 17:55
źródło użytkownik

głosy
5

Model-View-Controller

MVC jest wzór na architekturę aplikacji. To oddzielenie logiki aplikacji na trzy odrębne części, promowanie modułowość i łatwość współpracy i ponownego użycia. To również sprawia, że aplikacje bardziej elastyczna i przyjazna dla iterations.It oddziela aplikacja do następujących elementów:

  • Modele dla danych manipulacji i logiki biznesowej
  • Sterowniki do obsługi interfejsu użytkownika i aplikacji
  • Widoki dla obsługi obiektów graficznych interfejsów użytkownika oraz prezentacji

Do tego trochę bardziej jasne sprawiają, wyobraźmy sobie prostą listę zakupów aplikacji. Chcemy to lista nazw, ilości i ceny każdego elementu musimy kupić w tym tygodniu. Poniżej opiszemy w jaki sposób moglibyśmy wdrożyć niektóre z tej funkcji przy użyciu MVC.

wprowadzić opis obrazu tutaj

Model-View-Presenter

  • Modelu to dane, które będą wyświetlane w widoku (interfejs użytkownika).
  • Widok jest interfejsem, który wyświetla dane (modelu) i polecenia trasy użytkownika (Wydarzenia), prezenter działać na tych danych. Widok zwykle ma odniesienie do jego Presenter.
  • Presenter jest „middle-man” (grany przez kontrolera w MVC) i ma odniesienia do obu, widok i modelu. Należy pamiętać, że słowo „model” jest mylące. Powinno być raczej logika biznesowa, która pobiera lub manipuluje modelu . Na przykład: Jeśli masz bazę danych przechowującą Użytkownika w tabeli bazy danych i twój widok chce, aby wyświetlić listę użytkowników, wówczas Presenter miałyby odniesienie do logiki biznesowej w bazie (jak DAO), z którego Prezenter będzie kwerendy listę użytkowników.

Jeśli chcesz zobaczyć próbki z prostego wdrożenia proszę sprawdzić ten GitHub posta

Konkretny przepływ pracy z zapytań i wyświetlanie listy użytkowników z bazy danych może działać tak: wprowadzić opis obrazu tutaj

Jaka jest różnica między MVC i MVP wzorców?

Wzorzec MVC

  • Kontroler są oparte na zachowaniach i mogą być współużytkowane przez poglądów

  • Mogą być odpowiedzialne za określenie, które zobaczyć na wyświetlaczu (Front Controller deseń)

Wzorzec MVP

  • Widok jest bardziej luźno sprzężona modelu. Prezenter jest odpowiedzialna za wiązanie modelu do widoku.

  • Łatwiej badanej jednostki, ponieważ oddziaływanie z widzenia jest poprzez interfejs

  • Zazwyczaj zobaczyć na mapie prezenter jeden do jednego. Złożone poglądy mogą mieć wielo prezenterów.

Odpowiedział 29/11/2017 o 10:14
źródło użytkownik

głosy
3

Istnieje wiele wersji MVC, to odpowiedź brzmi o oryginalnej MVC w Smalltalk. W skrócie, jest to Obraz MVC vs MVP

Ta rozmowa droidcon NYC 2017 - Clean aplikacja konstrukcja ze składnikami Architektura wyjaśnia go

wprowadzić opis obrazu tutaj wprowadzić opis obrazu tutaj

Odpowiedział 09/09/2015 o 02:34
źródło użytkownik

głosy
0

Jest to miły film z Uncle Bob gdzie krótko wyjaśnia MVC & MVP na końcu.

Co moim zdaniem jest MVP to ulepszona wersja MVC, gdzie można w zasadzie oddzielić obawy jak masz zamiar pokazać dane masz. Presenter zawiera trochę logiki biznesowej swojego UI i mówi poprzez interfejs, który ułatwia przetestować logikę biznesową UI w różnych widokach. MVC nadal rozmawia przez interfejsy (granice) do warstwy kleju, ale nie ma takiego ograniczenia do nakładania UI logikę prezentacji. Poza tym, ja naprawdę nie widzę żadnych więcej różnic.

Odpowiedział 25/01/2018 o 21:24
źródło użytkownik

głosy
0

MVP

MVP oznacza Model - Widok- Presenter. Ten przyszedł do zdjęcia na początku 2007 roku, gdzie wprowadzono inteligentnych aplikacji Microsoft Windows Client.

Presenter działa jako roli nadzorczej w MVP który wiążącego Zobacz wydarzenia i logika biznesowa z modeli.

Zobacz wydarzenie wiązaniami będą realizowane w Presenter z interfejsem widoku.

Widok jest inicjatorem wejść użytkownik, a następnie delegatów wydarzeń do rzutnika i prezenter obsługuje powiązania zdarzeń i pobrać dane z modeli.

Plusy: Widok jest posiadanie tylko UI nie jakieś logiki Wysoki poziom testowalności

Wady: kompleks Bit i więcej pracy przy wykonywaniu oprawy imprez

MVC

MVC oznacza Model-View-Controller. Kontroler jest odpowiedzialny za tworzenie modeli i renderowania widoki z modelami wiążące.

Kontroler jest inicjatorem i decyduje, które zobaczyć do renderowania.

Plusy: Nacisk na pojedyncze Odpowiedzialności Zasada wysokiego poziomu sprawdzalności

Wady: Czasami zbyt dużo obciążenie dla kontrolerów, jeśli starają się uczynić wiele widoków w samym kontrolerze.

Odpowiedział 12/01/2016 o 04:50
źródło użytkownik

głosy
-1

Najprostsza odpowiedź brzmi: w jaki sposób oddziałuje z widoku modelu. W MVP model jest związany z prezenterem, który jest odpowiedzialny za aktualizację widoku. W MVC model aktualizuje widok bezpośrednio.

Odpowiedział 16/11/2017 o 17:32
źródło użytkownik

głosy
-2

Tutaj podana wyżej jest podsumowanie awarii człowieka i niemożność zrozumienia najprostszej handshake między dwoma komputerami. opiszę za pomocą zdrowego rozsądku, aby próbować budzić was wszystkich się od nich urojenia idealizm, że znalazły drogę do umysłów tych, którzy chcą je tworzyć. I jak głupi jak wszyscy z tych procesów dźwięk, faktem jest model obiektowy (który jest plik HTML) jest wymagana przez komputer kliencki. Oto jak to wszystko się sprowadza.

  1. Jeden hiperłącza zostanie naciśnięty i pojedyncze żądanie jest wysyłane przez maszynę Klienta do serwera. Serwer odpowiada na to żądanie z odpowiedzią wysyłając Object Model Klientowi. (Znany po prostu jako „odpowiedź”).
  2. Serwer odpowiada wysyłając model obiektowy (plik HTML) do maszyny Klienci (znany jako Full Handshake).
  3. Klienci mogą teraz Przeglądarka Render „Widok”, analizując, Lexing / tokenizing i przekształcenie tego Object Model Markup do GUI „Widok”.

I może być na emeryturze, ale przez Gosh cię tu chłopcy kłócą i debatują zupełny nonsens. I szczerze nie wiem co nazywasz Handshake między dwoma komputerami nie może być wszystko poza jednym żądaniu, pojedynczy Reakcja obiektu „Model” i wreszcie przeglądarek klienci renderowania „Widok”.

I na zakończenie, a View nie istnieje w uzgadniania. Object Model jest tylko znaczników dla Browser przekonwertować do GUI Zestawy widget i EVAL Metod przez trzy lub więcej modeli obiektów. HTML, CSS i JavaScript. I bez względu na to, ile każdy może powiedzieć Server robi coś niezwykłego jest jazda Dung.

„Serwer” nie jest „kontroler” to Directer a jedynie kieruje odpowiedź poprzez wysłanie przedmiotu „model” odpowiedź. Przeglądarka klienta (co byłoby prawdopodobne Controller), a następnie tworzy „Widok” z „model” Object Server nie ma nic wspólnego z tym. Język komputerowy nie może dostać się do obiektu modelu w ogóle, ani przekazać go. Wszystko to jest Markup Creator.

Cały bałagan jest po prostu po stronie klienta Browser „Kontroler”, który analizuje „Model”, aby uczynić „Widok” lub CMV lub MCV (wysłanej jako model w pierwszej kolejności) i nie można go zmienić. Ale można to nazwać po prostu wniosek, Response Object Model i renderingu widoku lub RRMV.

Odpowiedział 31/12/2018 o 02:10
źródło użytkownik

głosy
-2

Wiele osób nie wie dokładnie, jaka jest różnica pomiędzy kontrolerem i prezenter w MVC i MVP odpowiednio.

jego proste równanie gdzie

MVC View = Widok i prezentera z MVP

MVP Model = Kontroler i model MVC

Więcej informacji można znaleźć w tym http://includeblogh.blogspot.com.eg/2016/07/the-difference-and-relationship-between.html

Odpowiedział 31/07/2017 o 10:13
źródło użytkownik

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