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