Czytałem o kontrolerze Model View, Model View Presenter, Model View ViewModel i tak dalej, i ogólnie, podstawowa koncepcja wydaje się dość prosta do zrozumienia: utrzymuj ładne wizualizacje i naukowe odwagi jako osobne i nieświadome siebie jako możliwy. Nie ma logiki masła orzechowego w czekoladzie; spoko, podoba mi się to.
Problem polega na tym, że wciąż jestem trochę rozmyślny, jeśli chodzi o tę trzecią część ... nie-model-lub-widok. Wydaje się, że wszyscy mają własne wyobrażenie o tym, jak to nazwać, co należy zrobić, co jest właściwe, co jest po prostu źle ... i zaczynam wariować, próbując dowiedzieć się, kiedy Prezenter staje się ViewModel, a kiedy View nie powinien robię to, ponieważ taka jest praca Prezentera i ...
Włóczę się
Zamiast prosić kogoś o wyjaśnienie różnicy między nimi - ponieważ to już było robione od czasu do czasu (wiem; czytałem więcej artykułów, niż potrafię zliczyć) - byłbym ciekawy usłyszeć myśli kilku programistów na modelu, który sam stworzyłem.
To powiedziawszy, co sklasyfikowałbyś ten projekt jako, a co ważniejsze, czy widzisz coś w tym, co oczywiście jest do bani? Pewnie, chciałbym usłyszeć, że mam się dobrze, jeśli to naprawdę solidny projekt, ale wolałbym otrzymać solidną radę niż pochwałę.
Uwaga: użyję „Mostu” do tajemniczej trzeciej części Model-View-? aby uniknąć podświadomych sugestii, co to powinno być.
Model
- Jest autorytetem w zakresie danych.
- Otrzymuje informacje o żądanych zmianach od mostu.
- Zawiera i wykonuje całą logikę dotyczącą związku danych z innymi danymi.
Informuje mostek o zmianie danych (w przypadku danych, które most wyraził zainteresowanie).Edycja sformułowań: pozwala abonentom zewnętrznym (o których nic nie wie) na monitorowanie stanu lub wyników obliczeń.- Ma zerową wiedzę na temat widoku.
Widok
- Jest zainteresowany zapewnieniem użytkownikowi sposobu przeglądania i manipulowania danymi.
- Otrzymuje informacje o aktualizacjach danych z mostu.
- Zawiera i wykonuje całą logikę dotyczącą sposobu prezentacji danych i kontroli użytkownikowi.
- Informuje Most, gdy użytkownik wykonał czynność, która (prawdopodobnie) wpływa na Model.
- Informuje Most, jakie informacje są zainteresowane.
- Ma zerową wiedzę na temat modelu.
Most
- Jest koordynatorem i tłumaczem między modelem a widokiem.
- Wprowadza wszelkie odpowiednie zmiany formatowania informacji przekazywanych między modelem a widokiem.
- Zachowuje informacje o tym „kto musi wiedzieć, co”.
- Ma wiedzę zarówno na temat modelu, jak i widoku.
Dodatkowe uwagi
- W bardziej skomplikowanych programach często występuje wiele modeli. W tej sytuacji most zazwyczaj zajmuje się koordynacją / tłumaczeniem między wieloma modelami, a tym samym staje się autorytetem w oparciu o które protokoły / interfejsy API / modele projektowe powinny być budowane. (np. jeśli budujesz program do gry karcianej i chcesz zbudować alternatywny model tasowania talii, powinieneś użyć Mostka do określenia, jakie funkcje są wymagane do prawidłowej komunikacji z Mostem.)
- W małych prostych programach z tylko jednym widokiem i modelem Bridge często „zakłada”, jakie funkcje są dostępne po obu stronach. Jednak w miarę, jak programy stają się bardziej złożone, zaleca się, aby Widoki i Modele zgłaszały swoją funkcjonalność do Mostu, aby można było uniknąć nieefektywności i błędnych założeń.
Myślę, że to prawie obejmuje. Z całą pewnością jestem wdzięczny za wszelkie pytania dotyczące projektu, którego używam, i zachęcam również do wszelkich sugestii.
I jak zawsze dziękuję za poświęcony czas.