Návrhové vzory
Katalog návrhových vzorů rozdělují pánové Gamma, Helm, Johnson a Vlissides na následující části.
|
Účel |
Tvořivý |
Strukturální |
Chování |
Oblast |
Třída |
Tovární metoda |
Adaptér (třída) |
Interpret |
|
Šablonová metoda |
Objekt |
Abstraktní továrna |
Adaptér (objekt) |
Iterátor |
Jedináček |
Dekorátor |
Návštěvník |
Prototyp |
Fasáda |
Obnovitel |
Stavitel |
Most |
Pozorovatel |
|
Muší váha |
Prostředník |
Skladba |
Příkaz |
Zástupce |
Řetěz odpovědnosti |
|
Stav |
Strategie |
Abstraktní továrna (Abstract Factory)
Účel:
Poskytuje rozhraní pro vytváření řad příbuzných nebo závislých objektů, aniž by se musely specifikovat konkrétní třídy.
Jiné názvy:
Kit (souprava)
Použití:
Vzor Abstraktní továrna lze použít v následujících případech:
- systém má být nezávislý na tom, jak se jeho produkty vytvářejí, skládají a představují
- systém má být konfigurován pomocí jedné z více produktových řad
- řada příbuzných produktových objektů je navržena pro společné použití a toto omezení musíme dodržovat
- chceme poskytnout třídní knihovnu produktů, která má odhalit pouze jejich rozhraní a nikoliv jejich implementace
Struktura:
Součásti:
- AbstractFactory
- deklaruje rozhraní pro operace, které vytvářejí abstraktní produktové objekty
- ConcreteFactory
- implementuje operace k vytváření konkrétních produktových objektů
- AbstractProduct
- deklaruje rozhraní pro typ produktového objektu
- ConcreteProduct
- definuje produktový objekt, který se má vytvořit odpovídajíci konkrétní továrnou
- implementuje rozhraní AbstractProduct
- Client
- používá pouze rozhraní deklarovaná třídami AbstractFactory a AbstractProduct
Pozorovatel (observer)
Použití
Vzor Pozorovatel lze použít v následujících situacích:
- Abstrakce má dva aspekty jeden závisí na druhém. Jejich zapouzdření do zvláštních objektů je umožňuje nezávisle měnit a znovupoužívat.
- Změna jednoho stavu vyžaduje změnu jiných a jejich počet neznáme.
- Objekt má upozorňovat ostatní objekty, aniž by o nich cokoli předpokládal, nechceme aby byly tyto objekty těsně spojeny.
Struktura
[G2:492 n=1 size=400]
Součásti
- Subject
- Zná své pozorovatele.
Subject
může pozorovat libovolný počet objektů Observer
.
- Poskytuje rozhraní pro připojování a odpojování objektů
Observer
.
- Observer
- Definuje aktualizační rozhraní objektů, jež mají být upozorněny na změny subjektu.
- ConcreteSubject
- Ukládá stav vlivu do objektů
ConcreteObserver
.
- Posílá upozornění svým pozorovatelům v případě změny svého stavu.
- ConcreteObserver
- Udržuje odkaz na objekt
ConcreteSubject
.
- Ukládá stav, který má zůstat konzistentní se stavem objektu.
- Implementuje aktualizační rozhraní objektu
Observer
, které udržuje jeho stav konzistentní se stavem subjektu