Fasada to strukturalny wzorzec projektowy, którego celem jest uproszczenie dostępu do złożonego systemu. Zamiast wymagać od klienta znajomości wielu klas, metod i zależności, fasada udostępnia jeden prostszy interfejs.
W pytaniu egzaminacyjnym poprawna odpowiedź to Fasada, ponieważ dokładnie odpowiada opisowi: "uprościć interfejs złożonego systemu".
Na czym polega Fasada?
Wyobraź sobie system zamówień w sklepie internetowym. Aby złożyć zamówienie, trzeba wykonać wiele operacji:
- sprawdzić dostępność produktu,
- naliczyć cenę,
- obsłużyć płatność,
- utworzyć przesyłkę,
- wysłać powiadomienie.
Klient aplikacji nie musi znać wszystkich tych szczegółów. Może wywołać jedną metodę fasady, np. zlozZamowienie().
Przykład uproszczony
class SklepFacade {
private Magazyn magazyn = new Magazyn();
private Platnosc platnosc = new Platnosc();
private Wysylka wysylka = new Wysylka();
public void zlozZamowienie() {
magazyn.sprawdzTowar();
platnosc.pobierzOplate();
wysylka.nadajPaczke();
}
}
Kod korzystający z systemu wywołuje tylko:
SklepFacade sklep = new SklepFacade();
sklep.zlozZamowienie();
Zalety Fasady
- upraszcza korzystanie ze złożonego systemu,
- ukrywa szczegóły implementacyjne,
- zmniejsza zależności między klientem a podsystemami,
- poprawia czytelność kodu.
Ważne skojarzenie egzaminacyjne
Jeżeli pytanie mówi o prostym interfejsie do złożonego systemu, odpowiedzią jest Facade / Fasada.