Professional Documents
Culture Documents
DESIGN PATTERNS:
GAMMA CATEGORIZATION:
1. Creational patterns
- zajmują się tworzeniem, konstrukcją obiektów.
- explicit (constructor) vs implicit (DI, reflection, etc.)
- wholesale (single statement) vs piecewise (step-by-step)
2. Structural patterns
- concerned with the structure (e.g. class members)
- many patterns are wrappers that mimic the underlying class' interface
- stress the importance of good API design
3. Behavioral patterns
- they are all different, no central theme
I. CREATIONAL PATTERNS
- Builder
- osobny komponent do tworzenia obiektów (step-by-step), gdy tworzenie
staje się skomplikowane i nie chcemy tego robić w konstruktorze (piecewise)
- Factory Method
- statyczna metoda tworząca obiekt, bardziej ekspresywna niż
konstruktor
- Factory (Abstract Factory)
- osobna klasa z factory methods
- encja która zajmuje się procesem tworzenia obiektu
- może być external, albo znajdować się w środku obiektu, ale wtedy
najczęściej łamie Single Responsibility / Open-Closed Principle
- Prototype
- tworzenie obiektu z istniejącego obiektu
- wymagana explicit deep kopii lub kopii przez serializację, np.
JSON.parse()
- Singleton
- komponent tworzony tylko raz, np. database repository
- konstruktor wybiera co chce zwrócić, możemy zwracać tę samą instancję
- monostate: wiele instancji, dzielone dane
- lepiej zależeć na dependencji niż na singletonie