wtorek, 12 lutego 2013

Fasada


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