narzędzia |
Wzorzec fasadyWzorzec fasady to w inżynierii oprogramowania jeden z wzorców projektowych należący do grupy wzorców strukturalnych. Jest on pomyślany jako środek dostępu do złożonego systemu prezentujący na zewnątrz uproszczony lub uporządkowany interfejs programistyczny. [edytuj] ProblemCzasami istnieje potrzeba skorzystania z istniejącego już, rozbudowanego systemu. Obojętnie czy system ten jest biblioteką programistyczną na której chcemy zbudować swoją aplikację, czy jest rozbudowanym programem działającym z wiersza poleceń do którego robimy nakładkę GUI, korzystne jest zdefiniowanie obiektu pośredniczącego między starym systemem, a systemem, który z niego korzysta. Wzorzec fasady stosuje się aby:
W ogólności wzorzec fasady pozwala wykorzystać podzbiór możliwości skomplikowanego systemu w prostszy, specyficzny dla danego zastosowania sposób. [edytuj] RozwiązanieFasada jest obiektem pośredniczącym między klasami klientów żądającymi funkcjonalności, a klasami dostarczającymi jej elementów. Jako że zwykle w systemie potrzeba tylko jednej fasady, najczęściej definiuje się ją jako singleton. Obiekt fasady wie, które klasy ukrywanego systemu są odpowiedzialne za wykonanie danego żądania i wykonuje odpowiednie wywołania do właściwych obiektów systemu. Natomiast ukrywane klasy wykonują zlecone zadania nie posiadając żadnej wiedzy o fasadzie. Typowym scenariuszem użycia obiektu fasady jest:
Wariantem pkt. 2 jest wywołanie jednej tylko metody dostarczającej funkcjonalności ale z predefiniowanym zestawem parametrów. [edytuj] PrzykładPrzykładem użycia wzorca fasady może być aplikacja bankomatowa, która musi wchodzić w interakcję z systemem bankowym. Skoro aplikacja bankomatowa wykorzystuje tylko niewielką część możliwości systemu bankowego (autoryzacja karty, sprawdzenie stanu konta, wypłata i ew. wpłata), to można zastosować obiekt fasady, który zasłoni przed zewnętrznymi aplikacjami skomplikowaną strukturę wewnętrzną systemu bankowego. Upraszcza to pisanie aplikacji na bankomaty, a jednocześnie zapewnia lepsze bezpieczeństwo systemu bankowego. |