두가지 정도로 나뉘는데

 

클래스 어뎁터 패턴과

 

오브젝트 어뎁터 패턴으로 나뉜다

 

 

클래스 어뎁터 패턴은

 

A 클래스에서 잘 정의된 B 클래스의 함수등을 사용 하고 싶을때

 

다음과 같이 상속받아 사용 하는 패턴을 말한다

 

class A  : private B{

 

}

 

private 로 클래스 상속을 받게 되면 접근제어자가 B 에서 private 였던것 외에는 모두 private 되면서 상속 되기 때문에

 

오직 A 클래스 에서는 상속받은 B를 내부에서만 사용 할 수 있게 되는 구조가 된다

 

B 의 private 멤버는 상속(엄밀히 말하자면 접근)이 되지 않는다

(원래 private 로 접근제어된 멤버는 상속이 되지 않는다)

 

 

프로젝트를 동시에 진행하다가 잘 만들어진 클래스의 동일한 기능을 쓸때 이와 같은 패턴을 사용 할 수 있으며

 

 

상속구조가 복잡해지면서 다이아몬드 상속구조 같은 상황이 발생하거나 상속과정이 복잡해져서 클래스 어댑터 패턴을 사용 할 경우

 

여기저기서 중복이 일어나면서 상속을 받게 될 것 같다면

 

오브젝트 어뎁터 패턴을 쓰는 것이 낫다

 

 

오베즉트 어뎁터 패턴은 아래 처럼 사용 된다

 

class A{

 

private :

A* m_adapterA;

public :

A(){

 m_adapterA = new A;

}

  ... 자세한 처리는 생략

}

반응형

'디자인패턴과방법론 > 디자인패턴' 카테고리의 다른 글

composite 패턴  (0) 2012.11.02
Bridge 패턴  (0) 2012.11.02
visitor 패턴  (0) 2012.11.02
Template Method 패턴  (0) 2012.11.02
strategy 패턴  (0) 2012.11.02

+ Recent posts