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)

트랙백 주소 : http://icarosss.egloos.com/tb/383240
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Younghoe.Info at 2006/10/28 16:19

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

Commented by 이카로스 at 2006/09/26 10:09
Class Adapter는 다중상속을 하는데 다중상속은 C++에서만 가능하고 C#이나 JAVA같은 언어에서는 지원하지 않는다. 다중상속처럼 쓰려면 상속과 인터페이스를 같이 사용해야하는데 그렇게 되면 다중상속의 잇점은 사라지게 된다. 다중상속도 심각한 문제가 있지만... 일단 객체지향언어에서는 피해야 할 속성인듯 하다.

:         :

:

비공개 덧글

.

<< 이전 페이지     다음 페이지 >>