Fasada (wzorzec projektowy)

PodsumowanieLista

Fasada to wzorzec upraszczający dostęp do złożonego systemu poprzez pojedynczy, spójny interfejs. Stosowanie go może ograniczać sprzężenia, ułatwiać utrzymanie i może poprawiać czytelność kodu.

Organizacja i struktura

Fasada może być publiczną klasą modułu 1, zapewniając jednolity punkt wejścia do funkcjonalności ukrytych w warstwach wewnętrznych.

  • Wewnątrz modułu poszczególne komponenty pozostają ukryte, a interfejs fasady może stabilizować kontrakt klienta z systemem.
  • Zależności zewnętrzne są kierowane do fasady, co może zmniejszać sprzężenie między klientem a podsystemami.

Zastosowania

W systemach wielowarstwowych fasada może upraszczać integrację z podsystemami (np. usługami, repozytoriami, adapterami), wystawiając tylko potrzebne operacje. W aplikacjach legacy wprowadzenie fasady może ułatwiać refaktoryzację, pozwalając stopniowo porządkować kod bez zmiany publicznego interfejsu. W interfejsach API fasada może konsolidować przypadki użycia, ograniczając liczbę wywołań potrzebnych do realizacji operacji.

Efekty i wpływ

Zastosowanie fasady może poprawiać czytelność i przewidywalność użycia modułu dzięki ujednoliconemu punktowi wejścia. Hermetyzacja szczegółów implementacyjnych może zwiększać testowalność, pozwalając mockować tylko fasadę. Ograniczenie zależności może przyspieszać wdrażanie zmian, ponieważ modyfikacje wewnętrzne rzadziej wpływają na kod kliencki.

Ryzyko i ograniczenia

Nadmiernie rozbudowana fasada może stać się anemiczna lub „bogiem” modułu, utrudniając rozwój. Zbyt gruby interfejs może maskować złą strukturę wnętrza systemu, hamując potrzebną refaktoryzację. Nieprawidłowe wersjonowanie fasady może zwiększać koszt zmian po stronie klientów.