Witam,
po pracowitym okresie nauki do SCJP i zdaniu egzaminu,
Creational Patterns, używane do tworzenia instancji w taki sposób by w jak największym stopniu ukryć logikę i skomplikowanie procesu tworzenia.
- Abstract Factory - pozwala na zgrupowanie fabryk działających w tej samej domenie,
- Builder - oddziela budowanie obiektu od prezentacji, ma za zadanie ukryć skomplikowany proces budowania,
- Factory Method - budowanie złożonego obiektu bez dokładnego wyspecyfikowania drzewa zwróconych obiektów,
- Prototype - tworzenie nowej instancji klasy na podstawie już istniejącej instancji,
- Singleton - ma za zadanie zbudowanie tylko jednej instancji klasy. Niektóre źródła podają ten wzorzec jako 'antywzorzec'.
Structural Patterns, skupione są na klasach i dużych strukturach obiektów. Poprzez wykorzystanie dziedziczenia i kompozycji pozwalają na utworzenie nowych funkcjonalności na podstawie już istniejących.
- Adapter - pozwalana na współpracę klas z niekompatybilnymi interfejsami,
- Bridge - bardzo mocne oddzielenie(low coupling) formy abstrakcyjnej klasy od implementacji, co pozwala je traktować niezależnie,
- Composite - zebranie kilku obiektów w jeden, pozwala to na manipulowanie obiektami jak by były jednym obiektem,
- Decorator - dynamicznie dodaje/nadpisuje zachowanie metod w obiektach,
- Facade - udostępnia uproszczoną formę dużej ilości złożonego kodu,
- Flyweight - zmniejsza koszt tworzenia i manipulowania dużą liczbą podobnych obiektów,
- Proxy - zastępnik dla innego obiektu, ma za zadanie kontrolować dostęp, zredukować koszt użycia.
Behavioral Patterns, mają za zadanie uprościć komunikację, dzielenie się obowiązkami pomiędzy obiektami.
- Chain of Responsibility - deleguje polecenia do łańcucha przetwarzania,
- Command - tworzy obiekt enkapsulujący działanie i parametry,
- Interpreter - interpretuje nasz wewnętrzny język (nasz mały DSL),
- Iterator - sekwencyjny dostęp do obiektów bez zdradzania wewnętrznej implementacji,
- Mediator - pozwala na luźne powiązanie klas, gdzie tylko mediator posiada informację o budowie obiektów. Klasy wzajemnie nie posiadają informacji o swoich metodach,
- Memento - umożliwia zawsze przywrócenie obiektu do stanu z przed zmiany, operacja(undo),
- Observer - wzorzec publish/subscribe pozwala dużej liczbie obserwatorów(observers) zobaczyć zdarzenia,
- State - pozwala na zmianę zachowania obiektu, gdy jego stan ulegnie zmianie,
- Strategy - pozwala na wybieranie algorytmu ze zbioru podczas runtime'u,
- Template Method - definiuje szkielet algorytmu jako klasę abstrakcyjną, konkretne implementacje precyzują poszczególne zachowania,
- Visitor - wydzielenie algorytmu ze struktury na której pracuje.
Polecam też kilka anglojęzycznych katalogów wzorców: