Witam,
Próbuję zrozumieć idee wzorca MVC na przykładzie tworzenia interfejsu użytkownika i nie bardzo wiem czy dobrze to rozumiem.
A więc tak czy jeżeli tworzę wygląd (gui) w widoku to czy obsługę wszystkich przycisków i innych komponentów (głównie akcje i zdarzenia) należy pisać w kontrolerze?
I tak samo z obsługą danych czy należy pobierać dane z widoku w kontrolerze i w kontrolerze przesyłać je do modelu?
I w drugą stronę tak samo pobieram w kontrolerze z modelu i przesyłam do widoku?
Kontroler to pewna warstwa abstrakcji pomiędzy userem a aplikacją. Może on jedynie wywoływać metody modelu, jednak już nie uczestniczy w update widoku (bo robi to model).
przy aplikacjach desktopowych raczej użyłbym MVP
Tumeg napisał(a):
Kontroler to pewna warstwa abstrakcji pomiędzy userem a aplikacją. Może on jedynie wywoływać metody modelu, jednak już nie uczestniczy w update widoku (bo robi to model).
Czyli jak pobieram dane od użytkownika to w kontroler z widoku i przesyłam do modelu a jak wyświetlam dane to pobieram w widoku bezpośrednio z modelu?
Czyli jak pobieram dane od użytkownika to w kontroler z widoku i przesyłam do modelu a jak wyświetlam dane to pobieram w widoku bezpośrednio z modelu?
Jeżeli dobrze zrozumiałem Twoją składnię to odpowiedź brzmi TAK :)
Ja używam MVP(tak mi się wydaje:)).
Czyli gui jest maksymalnie "głupie". Ma jedynie publiczną metodę/metody update gdzie w argumencie przyjmuje model. Na eventy od użytkownika(klikanie przycisków itd.) podpinam presenter(czyli też jest maksymalnie odchudzone). Można powiedzieć, że zawiera jedynie metodę/metody publiczną update(FooModel model) oraz proste listenery. Gui często "chowam" za interfejsem, aby nie mieć cyklicznych zależności.
Model również jest głupi a do tego niezmienny. Jeżeli przyjdzie coś z "systemu" to odbiera to presenter, "mieli", ewentualnie powiadamia gui(tworząc nowy model).
Presenter z jednej strony odbiera dane od użytkownika a z drugiej strony robi update gui.
Z którego wzorca skorzystasz, nie ma to znaczenia. Ważne żeby oddzielić od siebie komponenty. Kiedyś np. zmieniła mi się specyfikacja i zamiast message z JMS musiałem odbierać ramki UDP. Dzięki skorzystaniu z MVP musiałem podmienić "tylko" presenter, model oraz gui pozostały niezmienione.