컴퓨터 공부/디자인 패턴

[7월 7일 1교시] Adapter 패턴, Template Method

려리군 2009. 7. 7. 09:22

Adapter 패턴

필요한 형태로 수정해서 재활용한다.


클래스의 인터페이스를 클라이언트가 기대하는 형태의 인터페이스로 변환한다.

Wrapper로 알려짐


해결책

1. 다중 상속을 활용한 Adapter 패턴 -> 예시) COM의 Containment.

2. 객체 합성에 의한 Adapter 패턴 -> 예시) COM의 Aggregation.


적용범위(Applicability)

1. 기존 클래스를 사용하나 인터페이스가 수정되어야 하는 경우.

2. 이미 만들어진 것을 재 사용하고자 하나 그 라이브러리를 수정할 수 없는 경우.

3. 이미 존재하는 클래스가 상속을 많이 받아서 인터페이스를 다 개조하는 것이 현실성이 없을 때.

(합성 방법을 사용)


포함방법


다중상속

(비슷한 기능일 때 사용)

adaptee는 구현상속만 되고 클라이언트 입장에서는 사용할 수 없다.


단점 : Adaptee의 Child를 사용할 수 없다.

장점 : 재정의가 가능하다.




관련 패턴 : Bridge, Decorator, Proxy(인터페이스를 변경시키지 않는다.)


Template Method

기본 골격 구조를 정의하고 구체적인 단계는 서브클래스에서 정의

서브클래스에서 알고리즘 구조를 변경할 수는 없다.


Motivation

시나리오는 추상클래스로 정의하고 실제 구현은 Concrete 클래스에서 한다.

추상화된 함수를 통해서 알고리즘의 일부 단계를 정의함(뼈대)으로서 - C에서는 static, 자바에서는 final로 정의

그 틀대로 구현하면 된다.


적용범위

알고리즘에 변하지 않는 부분을 한 번 정의하고 다양해 질 수 있는 부분은 서브클래스에서 정의

Refactoring

서브 클래스 확장을 제어.