Fasada (wzorzec projektowy)
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.