Purpose of Template method Pattern (템플릿 메소드 패턴의 목적)
- Identifies the framework of an algorithm, allowing implementing classes to define the actual behavior.
- 실제 동작을 정의하기 위해 클래스를 구현할 수 있도록 알고리즘의 프레임워크 구성하는 데 사용
Design Principle (디자인원칙)
- Hollywood Principle : Don't call us, we'll call you
- High level component --call--> low-level component
→ "프레임워크(framework)에서 흔히 적용되는 설계원칙으로, 저수준(low-level) 구성 요소가 프레임워크의 흐름(flow)에 여할 수 있으면서도하위 구성요소가 상위 구성요소를 직접 호출하는 "의존성 부패"를 막게 해주는 할리우드 Hollywood Principle)이 있다."
Template method Pattern (템플릿 메소드 패턴)
- Define the skeleton of an algorithm in an operation, deferring some steps to subclasses.
- Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.
- 골격을 정의하고, abstract로 선언해서 하위 클래스에서 작업하도록 함
Hook Method
- A hook is a method that is declared in the abstract class, but only given an empty or default implementation.
- subclass에서 "hook"을 제공해서, retun type( true/false)에 따라 hook을 무시할 수 도 있음
Related Patterns
- Template Method uses inheritance to vary part of an algorithm. : 세부 step만 바꾸고
- Strategy uses delegation to vary the entire algorithm. : 알고리즘 전체 variation을 바꿈
- Factory Method is a specialization of Template Method : Template Method의 특화된 형태가 Factory Method
Quiz) Template Method 패턴은 class scope의 패턴인가? 아니면 object scope의 패턴인가?
- Class scope의 패턴
Quiz) Template Method 패턴과 Strategy 패턴 모두 알고리즘의 다양성을 높이는데 활용될 수 있는데, 어떤 차이가 있는가?
- Template Method 패턴은 inheritance(상속)을 사용하여 알고리즘의 일부를 변경하고, Strategy 패턴은 delegation (위임)을 사용하여 전체 알고리즘을 변경합니다. 알고리즘 변형의 범위가 다릅니다.
Quiz) 다음 각 문장이 옳은지 O/X 로 답하시오
- (O) 템플릿 메쏘드(Template Method) 패턴은 OCP를 적용한 예이다.
본 글은 개인의 S/W 구조설계 역량 강화를 위한 학습 목적으로 정리된 내용입니다.
일부 타/개인 단체에 저작권이 있는 자료를 포함하고 있으므로, 절대 영리 목적으로 사용하실 수 없습니다.
'SW 공부 > Design Patterns' 카테고리의 다른 글
[디자인패턴] State pattern (상태 패턴) (2) | 2022.08.28 |
---|---|
[디자인패턴] Iterator pattern (반복자 패턴) (2) | 2022.08.28 |
[디자인패턴] Observer Pattern(옵저버 패턴) (2) | 2022.08.27 |
[디자인패턴] Strategy Pattern(전략패턴) (2) | 2022.08.27 |
GRASP (GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE PATTERNS) (2) | 2022.08.24 |
댓글