GRASP
Odpowiedzialność
Wykonywania
akcji
tworzenia nowych obiektów
koordynacji
Wiedzy
o swoich danych
o innych obiektach, danych które obiekt może policzyć itd.
Controller pattern
Wejściowy obiekt operacji biznesowej (np. serwis aplikacyjny). Start obsługi akcji biznesowej.
Pierwszy obiekt pod warstwą UI
Np. serwis pobierający dane z repozytorium i delegujące je do agregatu gdzie dzieją się rzeczy
Creator pattern
Kto może tworzyć obiekty?
Obiekty X tworzą obiekty Y jeżeli:
X agreguje Y
X ściśle używa Y
X ma wszystkie dane do stworzenia Y
Indirection pattern (nie bezpośredniość)
Aplikacja nie musi wiedzieć w którą stronę przebiega bezpośrednie flow aplikacji.
W przykładzie występuje moduł przygotowania, który umożliwia działanie całej aplikacji, ale poszczególne metody o sobie nie wiedzą. Tutaj można użyć architektury typu mikro-jądro.
Związane wzorce projektowe
adapter
mediator
fasada
bridge
Information Expert ( Ekspert informacji)
Klasa eksperta dostaje najwięcej informacji, bo jej się to należy.
Przydziel odpowiedzialność obiektowi który ma najwięcej danych potrzebnych do wypełnienia zadania.
High Cohesion + Low Coupling
Polimorfizm
Dla różniących się zachowań, użyj polimorfizmu
Klient abstrakcji nie używa if-else
Klient nie sprawdza konkretnej implementacji
Chroniona zmienność
Ulotna logika musi być chroniona
Ukrywamy zmienne rzeczy
Enkapsulacja
Np. lista odcinków musi być ukryta pod klasą kursu, bo zasady mogą się zmienić wewnątrz
Pure fabrications
np. repozytorium
Sztuczny obiekt
Zwiększa kohezję
Zmniejsza coupling
np. Serwis domenowy
Pragmatyzm
Zawsze rób tak, żeby to miało sens ;)
Last updated
Was this helpful?