두가지 정도로 나뉘는데
클래스 어뎁터 패턴과
오브젝트 어뎁터 패턴으로 나뉜다
클래스 어뎁터 패턴은
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 |