Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Środa, 18 Lipiec 2018
Zarejestrowanych użytkowników: 4
Dostępnych pytań testowych: 102
HOME
Strona tytułowa pracy dyplomowej
NAUKA
Materiały dydaktyczne związane z OOP
TESTY
Sprawdzenie poziomu zdobytej wiedzy
ZASOBY
Literatura i zasoby sieciowe o OOP
ŹRÓDŁA
Zbiór projektów dydaktycznych z OOP
KONTO
Możliwość śledzenia własnych postępów
INFO



Porównanie adapterów

W przedstawionym przykładzie wybór pomiędzy adapterem klas a adapterem obiektów nie ma wielkiego znaczenia jeśli chodzi o funkcjonalność. Oba typy adapterów spełniły bowiem swoje zadanie. Jednak są przypadki w których wybór jednego z typów adaptera może mieć bagatelne znacznie.

Pierwszym z takich przypadków jest adaptacja rodziny klas. Jeśli klasa RegulatorZewn byłaby klasą bazową z której wyprowadzonych byłoby wiele różnych regulatorów to w celu prawidłowej adaptacji całej rodziny klas należałoby zastosować adapter obiektów. Ponieważ taki adapter korzysta ze składnika będącego wskaźnikiem bądź referencją na klasę bazową obiektu adaptowanego to można do niego przypisać również obiekty pochodne.

Drugim przypadkiem jest adapter wymienny, czyli adapter, który posiada możliwość zmiany obiektu adaptowanego w trakcie działania programu. W takim wypadku również adapter obiektów jest właściwym rozwiązaniem.

Adapter klas należałoby stosować z kolei w sytuacjach, gdy korzystne okazałoby się korzystanie z wybranych cech związanych z dziedziczeniem. Można wyobrazić sobie sytuację w której obiekt adaptowany nie tylko musi dostosować się do interfejsu innej klasy, ale również zachować stary interfejs (ponieważ jest także używany w innych miejscach systemu). Taki adapter – zwany adapterem dwukierunkowym – różniłby się od zwykłego adaptera klas dziedziczeniem publicznym po klasie adaptowanej. Ponieważ – w konsekwencji - obiekt klasy adaptera dwukierunkowego dziedziczyłby publicznie po obu klasach, można by go użyć wszędzie tam gdzie można użyć wskaźnika bądź referencji na klasę celu lub klasę adaptowaną. Niestety wiążę się z tym pewna niedogodność – jeśli interfejsy obu klas zawierają "część wspólną" (np. metodą wirtualną o takiej samej nazwie i parametrach) to w pełni funkcjonalny adapter dwukierunkowy nie jest możliwy do zaimplementowania.

Innym aspektem przemawiającym za użyciem adaptera klas mógłby być przypadek, w którym należałoby skorzystać w adapterze ze składników chronionych klasy adaptowanej, bądź przesłonić metody wirtualne klasy adaptowanej.

Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11