Fasada (Facade)
jest jednym ze strukturalnych wzorców projektowych służącym do konstruowania
uproszczonego i uporządkowanego interfejsu programistycznego (lub zestawu
interfejsów) ułatwiającego dostęp do złożonego i bardziej skomplikowanego systemu.
Wzorzec ten umożliwia dostęp do wybranych funkcjonalności kompleksowego systemu
w prostszy i ujednolicony sposób. Zastosowanie wzorca Fasady nie ogranicza
funkcjonalności systemu, tylko dostarcza wygodniejszy interfejs zarządzania
wybraną częścią kodu.
Struktura
Uczestnicy
- Złożony system – klasy systemu implementujące funkcjonalności systemu, do których chcemy uprościć dostęp.
- Fasada – klasa posiadająca referencje do elementów złożonego systemu z metodami, do których potrzebny jest dostęp w ramach określonej funkcjonalności.
- Klient – klasa reprezentująca kod korzystający z wybranych funkcjonalności złożonego systemu za pośrednictwem Fasady.
Klasa klienta komunikuje się z systemem za
pośrednictwem Fasady wysyłając do niej żądania, które są następnie przekazywane
do odpowiednich elementów złożonego systemu. Odbywa się to przy pomocy
wywoływania metod z obiektów, do których referencje posiada klasa Fasady. Kod
kliencki nie musi znać zawartości składników złożonego systemu (inaczej mówiąc, są one przesłonięte). Dzięki
zastosowaniu Fasady, aplikacja jest podzielona na warstwy, co powoduje, że kod
klienta jest mniej zależny od kodu klas złożonego systemu ukrytego za Fasadą.
Konsekwencje stosowania
- Dostarczenie uproszczonego interfejsu do skomplikowanego systemu bez ograniczenia jego funkcjonalności.
- Fasada może być rozumiana jako ścieżka łączności klienta z systemem, która oddziela klienta od złożoności elementów systemu.
- Zwiększenie czytelności kodu dzięki wprowadzeniu uproszczonego interfejsu.
- Minimalizacja zależności Klient-System. System jest łatwiejszy w utrzymaniu, jeżeli klient nie korzysta bezpośrednio z kodu systemu ukrytego za fasadą.
- Niezależny rozwój funkcjonalności klienta i złożonego systemu poprzez wprowadzenie podziału aplikacji na warstwy.
- Ogranicza łączność między podsystemami, które stosują własne fasady do komunikacji między sobą.
- Zwiększenie bezpieczeństwa dostępu do systemu, poprzez korzystanie z wybranych funkcjonalności wynikających z kontekstu użycia systemu przez aplikację kliencką.
Zastosowanie
Wzorzec fasady jest stosowany szczególnie w przypadku, gdy:- potrzebujemy dostarczyć prostszy interfejs do złożonego systemu (ukryć złożoność systemu),
- pożądane jest wprowadzenie warstwowości aplikacji,
- chcemy ograniczyć złożoność relacji między klientem i elementami systemu,
- chcemy zwiększyć bezpieczeństwo dostępu do systemu przez udostępnienie tylko wybranych metod aplikacjom klienckim, wiąże się z tym także minimalizacja liczby możliwych przypadków błędnego użycia systemu.
Przykład
Najczęściej przywoływanym przykładem zastosowania
wzorca Fasady jest aplikacja bankomatowa komunikująca się z systemem bankowym.
Aplikacja bankomatowa stosująca wzorzec Fasady korzysta tylko z określonych
funkcjonalności systemu bankowego, np. autoryzacja karty, sprawdzenie stanu
konta, wypłata środków z konta. Obiekt fasady przysłania zewnętrznej aplikacji
widoczność skomplikowanej struktury wewnętrznej systemu bankowego. Udostępnia
jedynie wybrane funkcjonalności wymagane z punktu widzenia klienta
korzystającego z bankomatu.
Źródła
Brak komentarzy:
Prześlij komentarz