Przejdź do zawartości

Adapter (wzorzec projektowy): Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Matekm (dyskusja | edycje)
m →‎Struktura: wikizacja
Matekm (dyskusja | edycje)
m ort.
Linia 1: Linia 1:
'''Adapter''' (inne nazwy: Opakowanie, [[język angielski|en]]. Wrapper) jest to jeden ze [[Wzorzec projektowy (informatyka)|strukturalnych wzorców projektówy]] (zarówno klasowy jak i obiektowy), którego celem jest umożliwienie współpracy dwóm [[Klasa (programowanie obiektowe)|klasom]] o niekompatybilnych [[Interfejs klasy|interfejsach]]. Adapter przekształca interfejs jednej z klas na interfejs drugiej klasy. Innym zadaniem omawianego wzorca jest opakowanie istniejącego interfejsu w nowy.
'''Adapter''' (inne nazwy: Opakowanie, [[język angielski|en]]. Wrapper) jest to jeden ze [[Wzorzec projektowy (informatyka)|strukturalnych wzorców projektowych]] (zarówno klasowy jak i obiektowy), którego celem jest umożliwienie współpracy dwóm [[Klasa (programowanie obiektowe)|klasom]] o niekompatybilnych [[Interfejs klasy|interfejsach]]. Adapter przekształca interfejs jednej z klas na interfejs drugiej klasy. Innym zadaniem omawianego wzorca jest opakowanie istniejącego interfejsu w nowy.





Wersja z 01:37, 28 lut 2009

Adapter (inne nazwy: Opakowanie, en. Wrapper) jest to jeden ze strukturalnych wzorców projektowych (zarówno klasowy jak i obiektowy), którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach. Adapter przekształca interfejs jednej z klas na interfejs drugiej klasy. Innym zadaniem omawianego wzorca jest opakowanie istniejącego interfejsu w nowy.


Zastosowanie

Wzorzec adaptera stosowany jest najczęściej w przypadku, gdy wykorzystanie istniejącej klasy jest niemożliwe ze względu na jej 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.


Struktura

W celu stworzenia adaptera klasowego wykorzystywane jest wielokrotne dziedziczenie. Klasa adaptera dziedziczy prywatnie interfejs klasy adaptowanej oraz publicznie interfejs klienta.

W przypadku adaptera obiektowego jest inaczej. Klasa adaptera dziedziczy interfejs klienta oraz zawiera w sobie klasę adaptowaną. Rozwiązanie takie umożliwia oddzielenie klasy klienta od klasy adaptowanej.

Adapter dwukierunkowy

Zadaniem adaptera dwukierunkowego jest adaptowanie interfejsów klienta oraz adaptowanego. Dzięki takiemu rozwiązaniu każda z klas może pełnić zarówno funkcję klienta jak i adaptowanego. Ten typ adaptera można zaimplementować tylko za pomocą wielokrotnego dziedziczenia.


Konsekwencje stosowania

Konsekwencje stosowania wzorca są rózne w zależności od tego z jakim typem mamy doczynienia. W przypadku typu klasowego możemy mówić o następujących konsekwencjach:

  • brak możliwości adaptowania klasy wraz z jej podklasami
  • możliwość przeładowania metod obiektu adaptowanego

Do konsekwencji stosowania adaptera obiektowego należą:

  • 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

W obu przypadkach należy liczyć się z narzutem na wydajność - tym większym, im większa jest niekompatybilność interfejsów.


Zobacz też

Bibliografia

Szablon:Bibliografia start

  1. Inżynieria oprogramowania: Wzorce projektowe - wydanie II, WNT 2008, ISBN: 78-83-204-3472-9, str. 157-170

Szablon:Bibliografia stop