Adapter (Wrapper)
Problem:
Mamy dwie klasy o niekompatybilnych interfejsach i chcemy przekształcić jeden interfejs w drugi (inny),
bądź nowy.
Zadania:
- celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach.
- przekształca interfejs jednej z klas na interfejs drugiej klasy
- innym zadaniem adaptera jest opakowanie istniejącego interfejsu w nowy.
Przykład:
Jako przykład chciałbym przedstawić następujący kod. Mamy klasę Stack oraz List. Zamierzenie jest takie, aby za pomocą metod z klasy Stack wywoływać metody z klasy List, aby stworzyć prosty adapter.. W tym celu należy stworzyć nową klasę ListImpStack, która będzie dziedziczyć po List oraz implementować Stack. Następnie w definicjach metod klasy Stack wywoływane są metody z klasy List.
interface Stack { void push (T o) { ... } T pop () { ... } T top () { ... } } /*klasa adaptowana*/ class List { public void insert (DNode pos, T o) { ... } public void remove (DNode pos) { ... } public void insertHead (T o) { ... } public void insertTail (T o) { ... } public T removeHead () { ... } public T removeTail () { ... } public T getHead () { ... } public T getTail () { ... } } /*Klasa ListImpStack adaptuje klasę List opakowując ją w interfejs klasy Stack*/ class ListImpStack extends List implements Stack { public void push (T o) { insertTail (o); } public T pop () { return removeTail (); } public T top () { return getTail (); } }
Brak komentarzy:
Prześlij komentarz