Wzorzec projektowy Fasada (ang. Facade)

Intencją omawianego wzorca jest dostarczenie ?zjednoczonego? i uproszczonego imterfejsu zestawu interfejsów z danego podsystemu. Wzorzec Fasady opisuje interfejs wyższego rzędu, który sprawia, że podsystem jest łatwiejszy w użyciu.

Zalety

  • dostarcza prostszy interfejs do rozbudowanego podsystemu bez ograniczania jego funkcjonalności
  • osłania klienta od złożoności komponentów podsystemu
  • dostarcza "łącznik" pomiędzy podsystem a jego klientów
  • ogranicza łączność pomiędzy podsystemami ? każdy podsystem używa własnej Fasady i inne części systemu używają wzorca Fasady do komunikowania sie z subsystemami.

Stosowalność

  • kiedy potrzebujemy dostarczyć prostszy interfejs do złożonego podsystemu
  • kiedy istnieje szereg zależności pomiędzy klientem a klasami implementacji abstrakcji
  • kiedy wprowadzenie ?warstw? do systemu jest potrzebne, albo pożądane

Struktura

Uczestnicy

  • Fasada - wie jakie klasy podsystemu są odpowiedzialne za spełnienie żądania; przekazuje żądania klienta do odpowiednich obiektów podsystemu.
  • Klasy podsystemu:
    • Implementują funkcje podsystemu;
    • wykonują pracę przydzieloną przez obiekt klasy Fasada;
    • nic nie wiedzą o fasadzie, to znaczy nie przechowują żadnych odwołań do niej.

Współpraca

Klienci komunikują się z podsystemem, wysyłając żądania do Fasady, która przekazuje je do odpowiednich obiektów podsystemu. Choć to obiekty podsystemu wykonują właściwą pracę, fasada może być zmuszona realizować swoje zadania, polegające na tłumaczeniu jej interfejsu na interfejsy podsystemu. Klienci wykorzystujący fasadę nie muszą mieć bezpośredniego dostępu do obiektów jej podsystemu.

Zobacz przykład zastosowania Fasady

Przykład zastosowania