Adapter Pattern
01 May 2021 | DesignPattern개요
기존 구현되어있는 라이브러리나 API의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다.
예시
// 사용자가 기대하는 인터페이스
interface Stack<T>
{
void push (T o);
T pop ();
T top ();
}
// 기존 구현되어 있는 adaptee 클래스
class DList<T>
{
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 () { ... }
}
//어댑터 클래스
class DListImpStack<T> extends DList<T> implements Stack<T>
{
public void push (T o) {
insertTail (o);
}
public T pop () {
return removeTail ();
}
public T top () {
return getTail ();
}
}