2013-03-23 7 views
14

Próbuję zrozumieć, czy istnieje różnica między wzorcami widoku modelu i modelu widoku adaptera, a jeśli tak, jaka jest różnica. Nie znalazłem żadnych zasobów internetowych, które je porównują/porównają, więc nie jestem nawet pewien, czy są rzeczywiście różne.Jaka jest różnica między rzutnikiem modelu a rzutnikiem modelu?

Opisy, które znalazłem, brzmią zasadniczo identycznie jak ja. Z tego co ja zebrane w obu przypadkach przepływ sterowania jest w zasadzie:

View <-- Adapter/Presenter --> Model 
(where Adapter/Presenter can also respond to events from View and Model) 

View: the UI 
Adapter/Presenter: main logic; mediator between the UI and the data model 
Model: the data model 

Adapter/Prezenter „wie o” View i model, ale widok i model nie wiem o nikim innym niż oni sami.

Spodziewam się, że jest tu subtelność, której zupełnie tutaj brakuje. Co to jest?

Odpowiedz

10

Jedyne, co mogę myśleć to to, że MVA jest ogólnie kojarzone z wieloma adapterami pomiędzy widokiem a modelem. Chociaż nic nie powstrzymuje cię przed zrobieniem tego w MVP, myślę, że MVP implikuje silną triadę.

Aktualizacja (lata później): z perspektywy czasu uważam, że kluczową różnicą byłaby kontrola przepływu. W MVP, widok wyzwala/tworzy/wywołuje prezentera, który deleguje do modelu i odpowiada z powrotem do widoku. W MVA, kiedy przychodzą wiadomości, wybierany jest Adapter, który pośredniczy między Modelem a Widokiem. Ponieważ widok MVP wyzwala/tworzy/wywołuje prezentera, wybór między wieloma prezenterami (jak wybrano adapter) nie jest prostym dopasowaniem.

+1

Innymi słowy, w MVP widok jest znany prezenterowi i jest aktywną stroną, która obserwuje i deleguje wydarzenia do prezentera. W MVA widok nie jest świadomy adaptera, ale na odwrót, a adapter jest aktywną stroną obserwującą zdarzenia widoku. – hidro