Concept/Design Pattern
[Design Pattern] Template Method Pattern
eee_269
2021. 5. 30. 22:10
728x90
반응형
템플릿 메소드 패턴
- 메소드에서 알고리즘의 골격 정의
- 알고리즘의 여러 단계 중 일부는 서브 클래스에서 구현할 수 있다.
- 알고리즘의 구조는 그대로 유지하면서 서브 클래스에서 특정 단계를 재정의 할 수 있다.
- superclass가 알고리즘을 정의하고, 단계별로 실행될 메소드 등 로직을 정해놓으면 subclass에게 일부 로직의 구현만을 맡기는 패턴
- subclass 필수
- final 선언
- Hook
- Optional한 Step을 정의할 수 있다.
- subclass가 꼭 구현하지 않아도 된다.
- 보통 아무 로직이 없거나 default 로직이 있다.
- boolean을 반환하는 hook을 만들어 template method 내의 if문에서 호출하면 조건부 실행 제어가 가능
- 특정 step의 실행 직전/후에 subclass가 react 할 수 있는 통로로 사용될 수 있음
- JFrame-paint / Applet-paint
- 할리우드 원칙
- ' 먼저 연락하지 마세요, 저희가 연락 드리겠습니다. '
- 의존성 부패 방지
- high level 컴포넌트가 low level 컴포넌트의 로직의 호출 타이밍을 정하고, low level 컴포넌트는 단지 로직을 정의하기만 하는 원칙
- 저수준 구성요소들을 다양하게 사용할 수 있으면서도, 다른 클래스가 그러한 구성 요소에 너무 의존하지 않게 만들어주는 디자인을 구현하기 위한 기법 제공
- Strategy : 완전한 알고리즘
- Template Method : 불완전한 알고리즘 (다른 클래스에서 제공해주는 메소드 사용)
728x90
반응형