Temat: Walidacja formularzy po której stronie?
Tomasz Zadora:
Jarek Żeliński:
[...] jeżeli jakąkolwiek logikę dziedziny (w tym walidację) umieścimy w widoku to każda sytuacja posiadania inteligentnych skórek (osobno na komputer, osobno na telefon, osobno, na smartfony itp.) doprowadzi do powielania reguł biznesowych (walidacji) i stracimy podstawową korzyść: jednoosobowa (punktowa) odpowiedzialność.
Nie nie pisałem o umieszczaniu logiki w viewerze, rozumiem więc, że to Twoja taka poboczna dygresja ?
a czym jak nie elementem logiki jest walidacja?
wtedy nazywa się Anemiczny Model Dziedziny i jest dokładnie antywzorcem:
Pomyłka, założenie jest takie, że model może posiadać metody ale tylko takie które nie zmieniają jego stanu.
mam obiekt Kowalski:Osoba, gdzie umieścisz metodę "Załóż czapkę" albo "Zwiększ swój wiek o jeden"?
http://pl.wikipedia.org/wiki/Model-View-Controller#Pas...
" Żądanie zmiany stanu i wykonania jakichś operacji pochodzi zawsze z kontrolera oraz z widoku za pośrednictwem udostępnionego API"
akurat ta definicja MVC w wiki bazuje właśnie na EJB... niech sobie tam taka będzie, to tylko WIKI czyli "wiedza społeczna".
Logika biznesowa to Model
Kto tak napisał i dlaczego miało by to być wiążące ? Ok powiedzmy, że to prawda, w takim razie kontroler nie jest logiką ? :D
ależ to nie jest wiążące :), źle pojmujesz moje wypowiedzi, ja i nie tylko, pisze o tym jak projektuje, dlaczego, oraz że MVC u uznanych praktyków (między innymi Fowler a także Evans ten od DDD) także jest tak postrzegany.
Kontroler nie jest logiką biznesową a logiką sterowania. To tak w samochodzie kierowca to logika i sterowanie tym do czego samochód jest używany czyli Model, komputer pokładowy to Kontroler, który działa zawsze tak samo niezależnie od tego do czego użyjemy samochodu i jak oraz gdzie pojedzie kierowca anawet jak zmieni się kierowca (samochód bez kierowcy to framework MVC z miejscem na Model).
Jedna uwaga, np. ja albo Wojtek piszemy jak projektujemy i dlaczego. Ja to już napisano, dlaczego? Bo oprogramowanie tak zaprojektowane jest bardzo łatwe i tanie w rozwoju i modyfikacji, absolutnie nie piszemy, że to "jednie słuszna metoda".
Gdyby kontrola danych była w Widoku to dodanie w przyszłości nowych interfejsów wiązało by się z powielaniem reguł walidacji w każdym kolejnym widoku a także interfejsie (np. poza wprowadzaniem danych przez człowieka pobierał bym je także z innego systemu, nazwijmy to "chmurą;, żeby było modnie. Jak się to rozrośnie, to reguła opisująca np. numer telefonu będzie powielona tle razy ile mam widoków i interfejsów. Poza pracochłonnością nie widzę w tym nic złego :)
Jarek Żeliński edytował(a) ten post dnia 08.02.11 o godzinie 18:13