11 – Wzorzec projektowy ADAPTER w języku C# – #DSP2017

Witaj,
W poprzednim poście na temat wzorców projektowych przedstawiłam główne kategorie wzorców projektowych oraz krótki opis poszczególnych wzorców. Dzisiaj przedstawię jeden ze wzorców strukturalnych - Adapter.

Głównym zadaniem wzorca strukturalnego jest opis struktury powiązanych ze sobą obiektów.

Adapter (adapter) służy do umożliwienia współpracy dwóch klas o niekompatybilnych (niezgodnych) interfejsach.
Adapter pozwala dopasować pewną klasę(y) do innego złącza przez utworzenie nakładki która go implementuje. Wewnątrz tej struktury (o której mówimy jako adapter), wywołujemy metody adaptowanego obiektu, który pozostaje nietknięty.
Wzorzec ten stosowany jest najczęściej w przypadku, gdy wykorzystanie istniejących klas jest niemożliwe ze względu niekompatybilny interfejs. Drugim powodem użycia może być chęć stworzenia klasy, która będzie współpracowała z klasami o nieokreślonych interfejsach.
Istnieją dwa warianty wzorca Adapter:

  • klasowy,
  • obiektowy;

Wariant obiektowy wzorca Adapter:

Wariant klasowy wzorca Adapter:

Dwa przedstawione warianty wzorca Adapter nieznacznie różnią się budową oraz właściwościami. Do utworzenia adaptera klasowego wykorzystywane jest dziedziczenie. Klasa adaptera dziedziczy prywatnie po klasie adaptowanej oraz publicznie implementuje interfejs klienta. Wywołanie funkcji jest przekierowywane do bazowej klasy adaptowanej.

Jeżeli chodzi o Adapter obiektowy, klasa adaptera dziedziczy interfejs klienta oraz zawiera klasę adaptowaną. Dzięki temu możemy oddzielić klasy klienta od klasy adaptowanej. Komplikuje to proces przekazywania żądania: klient wysyła je do adaptera wywołując jedną z jego metod. Następnie adapter konwertuje wywołanie na jedno bądź kilka wywołań i kieruje je do obiektu/obiektów adaptowanych. Te przekazują wyniki działania bezpośrednio do klienta.

 

Konsekwencje stosowania wzorca Adapter:

  • Typ klasowy:
    - brak możliwości adaptowania klasy wraz z jej podklasami,
    - możliwość przeładowania metod obiektu adaptowanego;
  • Typ obiektowy:
    - możliwość adaptacji klasy wraz z jej podklasami (związane jest to z wykorzystaniem składania obiektów),
    - możliwość dodawania nowej funkcjonalności,
    - brak możliwości przeładowania metod obiektu adaptowanego;

 

 

 

Zapraszam serdecznie do śledzenia mnie na:
Twitter
Github - piotrowinka2410

Instagram
Snapchat - piotrowinka2410
Fanpage na Facebooku 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *