Facade (fasáda)
Návrhový vzor Facade (fasáda) sa používa na vytvorenie jednotného rozhrania pre celú logickú skupinu tried, ktoré sa tak združia do subsystému.
Motivácia
Veľakrát v našej aplikácii pracujeme s niekoľkými rozhraniami rôznych tried. To môže byť často neprehľadné, najmä ak sú rozhrania tried zložitá. Ak spolu triedy logicky súvisí, môžeme ich združiť do subsystému pomocou fasády (Facade). Získame tak jednotné rozhranie pre funkcionalitu, ktorú nám subsystém poskytuje.
Vzor
Fasáda (Facade) je pomerne jednoduchý vzor, ktorý sa skladá z jednej triedy, ktorá fasádu tvorí. Tá je napojená na ďalšiu triedy, s ktorými pracuje. Zvonku je však vidieť len fasáda (od toho názov), a tá zastupuje rozhranie pre celý subsystém. Celá zložitá štruktúra tried je v pozadí.
Zníži sa tým počet tried, s ktorými komunikujeme. Subsystém sa lepšie používa aj testuje. Jedná sa teda opäť o prostredníka a je tu určitá podobnosť so vzorom Adapter (Wrapper). My však obaľujeme rovno niekoľko tried do jedného logického subsystému.
Príkladom by mohla byť fasáda pre prácu s PC na úrovni hardvéru. Združovala by triedu čo umožňuje počítač uspať, reštartovať alebo vypnúť. Ďalej triedu čo by upravovala jas monitora a ďalšie, čo by čítala teploty procesora a disku. Fasáda by zastrešila všetky metódy do jedného rozhrania. Mohla by obsahovať aj len vybrané metódy pre náš účel.
Výhodou vzoru je aj vyriešenie závislostí jednotlivých komponentov v subsystému. Ak medzi nimi odovzdávame nejakú inštanciu, rieši sa to vnútri fasády.