템플릿메서드 패턴
객체 연산에는 알고리즘의 뼈대만 정의하고, 구체적인 처리는 서브클래스에게 맡기는 패턴
validation체크와 같은 뼈대 로직은 템플릿메서드에 정의하고, 구체 로직은 서브클래스에 맡긴다.
사용시점 및 이유
- 어떤 알고리즘 중 변하지 않는 부분은 남겨두고, 변하는 부분만 서브클래스에서 정의하도록 남겨두고자 할 때
- 클래스들의 공통적인 행동을 추출하여 슈퍼클래스에 몰아둠으로써 코드 중복을 피하고 싶을 때
구현
- 추상 클래스에는 공통 로직인 templateMethod()가 있다.
- templateMethod() 내부에서 실제 구현인 method1()과 method2() 혹은 hook메서드를 실행한다.
- hook메서드는 기본적으로 슈퍼클래스에서는 아무것도 가지지 않은 메서드이고, 서브클래스에서 오버라이딩 하여 templateMethod에서 특정 로직을 수행하게 할 수도 있다.
- hook메서드 에서 boolean을 리턴하도록 정의하고, 서브클래스에서 true, false등을 조작하여 templateMethod 내부 로직을 분기처리 할 수도 있다.
'디자인패턴' 카테고리의 다른 글
(행동패턴) 비지터(방문자) 패턴 (0) | 2023.05.11 |
---|---|
(행동패턴) 전략 패턴 (0) | 2023.05.10 |
(행동패턴) 상태 패턴 (0) | 2023.05.08 |
(행동패턴) 옵저버 패턴 (0) | 2023.05.08 |
(행동패턴) 메멘토 패턴 (0) | 2023.05.08 |