템플릿 메서드 디자인패턴
- 객체의 연산에는 알고리즘의 뼈대만을 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스 쪽으로 미룬다. 알고리즘의 구조 자체는 그대로 놔둔 채 알고리즘 각 단계 처리를 서브클래스에서 재정의할 수 있게 한다.
클래스 설명
템플릿 메서드 패턴은 팩토리 메서드 패턴과 구조가 거의 같다고 할 수 있다. 보는 관점에 따라 두개의 패턴을 구분할 수 있는데, 생성관점에서 바라보는 패턴은 팩토리 메서드 패턴이라 표현하고, 행동관점에서 바라보는 패턴을 템플릿 메서드 패턴이라 생각하면 되겠다.
클래스 사용방법
var app: ConcreteClass = new ConcreteClass();
app.templateMethod();
클래스 구성
//AbstrackClass : 서브클래스들이 재정의를 통해 구현해야 하는 알고리즘 처리 단계 내의 기본 연산을 정의.
package
{
public class AbstrackClass
{
public function AbstrackClass()
{
}
public function templateMethod(): void //이부분을 "템플릿 메서드"라고 함.
{
//기본알고리즘 처리
operation1();
operation2();
}
protected function operation1(): void
{
//내부구현 생략...
}
protected function operation2(): void
{
//내부구현 생략...
}
}
}
//ConcreteClass : 서브클래스마다 달라진 알고리즘 처리 단계를 수행하기 위한 기본 연산을 구현.
package
{
public class ConcreteClass
{
public function ConcreteClass()
{
}
override protected function operation1(): void
{
//재정의 내부구현 생략...
}
}
}
'디자인 패턴' 카테고리의 다른 글
디자인패턴 : Iterator (0) | 2011.08.03 |
---|---|
디자인패턴 : State (0) | 2011.08.03 |
디자인패턴 : Facade (0) | 2011.08.03 |
디자인패턴 : Factory Method (0) | 2011.08.03 |
디자인패턴 : Adapter (0) | 2011.08.03 |