Fasada (Facade)

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

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.