Temat: SOLIDny kod
SRP
ogólnie OK ale przykład chyba mylący, po drugie szczytem piramidy SRP jest raczej ogólny model MVC czyli:
- komponent (klasa) Model odpowiada tylko ale za całą, za logikę dziedzinową
- komponent V za prezentacje na ekranie
- komponent C za sterowanie całością
i teraz nie będziemy mieli dedykowanej klasy do walidacji danych formularza tylko np. fabryka nie powinna przyjąć złych danych do utworzenia obiektu, jeżeli zaś dane to np. login, to warto stworzyć typ (valueObject) który sam z siebie sprawdza swojej atrybuty.
pisze o walidacji bo to "kontrola" tego czy obiekt dziedzinowy jest poprawny jest odpowiedzialnością Modelu (dziedziny), zaś login to jakaś odpowiedzialnością kontrolera.
Chyba wygodnie jest korzystać (napisać) klasę komponentu View, która po prostu pokaże na ekranie takie pola jakie dostanie w DTO, wtedy do aktualizacji (zmiana pola) będzie jednak klasa Modelu a nie 'coś w GUI"... tak sądze.
Osobiście od pewnego czasu masowo 'eksploatuje" DTO i VaueObject co pozwala sprowadzić 100% projektu do klas, które na początku nie muszą mieć nawet atrybutów by całość dobrze zaprojektować (tu oczywiście wstaną z krzykiem piewcy teorii , że projektu zaczynamy od modelowania danych, owszem ale strukturalne a nie obiektowe ;))