본문 바로가기

디자인 패턴

디자인패턴 : Template Method


템플릿 메서드 디자인패턴

- 객체의 연산에는 알고리즘의 뼈대만을 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스 쪽으로 미룬다. 알고리즘의 구조 자체는 그대로 놔둔 채 알고리즘 각 단계 처리를 서브클래스에서 재정의할 수 있게 한다.

클래스 설명

템플릿 메서드 패턴은 팩토리 메서드 패턴과 구조가 거의 같다고 할 수 있다. 보는 관점에 따라 두개의 패턴을 구분할 수 있는데, 생성관점에서 바라보는 패턴은 팩토리 메서드 패턴이라 표현하고, 행동관점에서 바라보는 패턴을 템플릿 메서드 패턴이라 생각하면 되겠다.

클래스 사용방법

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