Fasáda (návrhový vzor): Porovnání verzí
Smazaný obsah Přidaný obsah
přidáno "Shrnutí" značka: editace z Vizuálního editoru |
Sekce příbuzné vzory, doplnění implementace |
||
Řádek 15:
== Implementace ==
Při implementaci je důležité brát v úvahu i přístupnost rozhraní subsystému. Stejně jako u tříd, kde mohou být veřejné i privátní atributy a metody (funkce) lze v některých objektových jazycích (např. [[C++|C++]], viz jmenné prostory) definovat i veřejnost, či privátnost tříd samotných. Veřejné rozhraní subsystému jsou všechny třídy, ke kterým mohou přistupovat všichni klienti, zatímco privátní rozhraní je pouze pro další subsystémy, které rozšiřují funkcionalitu. Fasáda je poté součástí veřejného rozhraní. <ref name=":1" />
Pro větší oddělení závislosti mezi klienty a subsystémem lze Fasádu učinit abstraktní třídou a pro vytvoří se podtřídy pro konkrétní implementaci. Klienti posílají zprávy přes abstraktní fasádu a neví tak, která konkrétní implementace je obsluhuje. Podtřídy není nutné vytvářet, pokud je možné objekt Fasády nakonfigurovat pomocí existujících tříd v subsystému. <ref name=":1" />
Rozdělení funkcí <ref name=":0" />:
* Fasáda
** Nabízí funkcionalitu
Řádek 22 ⟶ 27:
** Neudržují odkaz na fasádu
** Implementují konkrétní funkce
** Zodpovídají dotazy delegované fasádou
=== Příklad implementace fasády v JAVA. ===
Řádek 54 ⟶ 59:
</source>
Jak je vidět z ukázky, JOptionPane nabídne pro vytváření dialogu mnohem jednodušší rozhraní, než kdybychom ho měli vytvářet sami.
== Příbuzné vzory ==
Fasádu lze nahradit v některých případech [[Abstraktní továrna|abstraktní továrnou]], popř. použít společně pro subsystémovou nezávislost, neboť abstraktní továrna kromě skrývání implementace přidává i skrývání konkrétních tříd při vytváření objektů.<ref name=":1" />
Podobným návrhovým vzorem je i [[Prostředník (návrhový vzor)|Prostředník]], který taktéž poskytuje abstraktní vrstvu mezi implementací a klientem, ale rozdílem je, že u [[Prostředník (návrhový vzor)|Prostředníka]] klient zná třídu, se kterou komunikuje, ale používá k tomu prostředníka. Zatímco u Fasády je implementace skryta. Navíc [[Prostředník (návrhový vzor)|Prostředník]] často přidává novou funkcionalitu, což není u Fasády běžné.<ref name=":1" />
== Shrnutí ==
|