2006년 09월 26일
Adapter
클래스를 재사용할 경우 기존의 클래스를 수정하지 않고 개발중인 어플리케이션에서 사용할 수 있도록 해준다.
Wrapper라고 불리는 Adapter 패턴은 기존 클래스의 인터페이스를 사용하고자 하는 클래스의 요구에 맞게 인터페이스를 변환 한다.
종류
Object Adapter : 래핑할 객체의 인스턴스를 갖고 있다.

Class Adapter : 원하는 인터페이스를 제공하기 위해 다중상속함

적용
- 이미 존재하는 클래스를 사용하려고 하는데 그 인터페이스가 필요로 하는 것과 다를 경우
- 재사용 가능한 클래스를 만들려고 하는데, 그 클래스가 예측할 수 없는 인터페이스를 갖는 클래스들과 협력하는 클래스인 경우.
- 객체 어댑터 패턴을 사용할 경우object adapter only, 어떤 클래스의 수많은 서브클래스를 래핑하고자 할 경우, 일일이 래핑하는 것은 매우 어렵다. 객체 어댑터 패턴은 이 서브클래스들의 부모 클래스를 래핑할 수 있다.
Example Object Adapter
interface Stack
{
void push (Object o);
Object pop ();
Object top ();
}
/* DoubleLinkedList */
class DList
{
public void insert (DNode pos, Object o) { ... }
public void remove (DNode pos, Object o) { ... }
public void insertHead (Object o) { ... }
public void insertTail (Object o) { ... }
public Object removeHead () { ... }
public Object removeTail () { ... }
public Object getHead () { ... }
public Object getTail () { ... }
}
/* Adapt DList class to Stack interface */
class DListStack implements Stack
{
private DList _dlist;
public DListStack() { _dlist = new DList(); }
public void push (Object o) {
_dlist.insertTail (o);
}
public Object pop () {
return _dlist.removeTail ();
}
public Object top () {
return _dlist.getTail ();
}
}
# by | 2006/09/26 10:07 | Design Pattern | 트랙백(1) | 덧글(1)






☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : 어댑터 패턴(Adapter Pattern)
Adapter Pattern (Wrapper Pattern) 1. 컨텍스트특정 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 전환시킨다. 인터페이스가 호환되지 않아 상호 작용할 수 없는 경우에, Adapter를 이용하여 클래스 사이의 인터페이스의 호환성을 보장할 수 있다. Adapter 패턴의 용도는 실생활에서 전기 플러그의 형태가 맞지 않은 경우에 어댑터(adapter)를 사용하는 것과 같은 이치라고 할 수 있다. 또한, 인터페......more