하위 클래스에서 구체적으로 처리하기

 

 * Template Method Pattern

   - 알고리즘을 위해 템플릿을 제공한다

   - 템플릿에서 각각의 단계가 메소드에 의해 표현된다

   - 공통 동작을 하는 메소드는 슈퍼 클래스에서 정의된다

   - 나머지는 abstract 로 선언되어 서브클래스에서 정의되어야 한다

   - 알고리즘의 스텝을 정의하고 하나 이상의 스텝들은 서브클래스에서 구현될 수 있다

 

   - 템플릿을 만듦으로써 알고리즘을 캡슐화한다

   - 스텝들로 알고리즘의 뼈대를 정의한다

   - 서브클래스들은 알고리즘 구조를 변경하지 않고 특정 스텝을 재정의할 수 있다

 

* 의도

  - 구현한 클래스가 실제 동작을 정의할 수 있도록 알고리즘의 프레임워크를 식별한다

 

* 활용

  - 단일 abstract 구현체가 필요할 때

  - 서브 클래스들의 공통 행위가 공통 클래스에 존재해야 할 때

  - 부모 클래스가 서브클래스들의 행동을 균등하게 호출해야만 할 때

  - 대부분의 서브클래스가 각각의 행동을 구현해야 할 때

 

* 디자인 원리

   - Dependency Rot (의존성 부패) 를 방지한다

     : 고수준 컴포넌트가 저수준 컴포넌트에 의존하고, 저수준 컴포넌트도 고수준 컴포넌트에 의존함으로써 꼬여있는 상태

   - 고수준 컴포넌트가 저수준 컴포넌트를 필요할 때 호출함으로써 제어한다

 

 

* Hook Method

  - 추상 클래스에 선언되어 비어있거나 기본적인 구현만 제공하는 메소드

  - 서브 클래스에서 동작을 재정의하거나 하지 않을 수 있다

 

* 템플릿 메소드 패턴은 알고리즘의 변화하는 부분을 상속을 이용한다

  전략 패턴은 전체 알고리즘을 변화시키기 위해 위임을 이용한다

  팩토리 메소드 패턴은 템플릿 메소드 패턴의 특별한 형태이다

 

 

변경되는 부분을 하위 클래스에 위임하고 하위클래스에서 구체적으로 처리

'SW 공학 > ::: 패턴' 카테고리의 다른 글

///[GoF] State Pattern  (0) 2021.09.26
///[GoF] Iterator Pattern  (0) 2021.09.26
///[GoF] Observer Pattern  (0) 2021.09.25
///[GoF] Strategy Pattern  (0) 2021.09.22
Design Pattern 이란?  (0) 2021.09.20

+ Recent posts