템플릿이란?
- 템플릿 == 문자형 틀
- 예를 들어, 색연필로 색칠할 때 색상은 바뀌어도 문자형은 유지되는 것처럼, 상위 클래스의 틀을 통해 기본적인 로직은 동일하게 유지
템플릿 메서드 패턴이란?
상위 클래스에서 처리의 뼈대를 결정하고 하위 클래스에서 그 구체적인 내용을 결정하는 패턴이다.
구성(추상 클래스 + 구현 클래스)
추상 클래스
- 추상 클래스는 하위 클래스에서 구현할 것으로 기대하는 추상 메서드와 로직의 뼈대가 되는 템플릿 메서드로 구성된다.
- 템플릿 메서드는 구체적인 로직의 순서를 정의한 일반 메서드로, 추상 메서드의 조합을 통해 알고리즘을 구성한다.
- 템플릿 메서드 == 알고리즘
Public abstract class AbstractDisplay {
// 추상화 메서드(== 뼈대)
public abstract void open();
public abstract void print();
public abstract void close();
// 템플릿 메서드(== 알고리즘, 로직)
public final void display() {
open();
for (int i = 0; i < 5; i++) {
print();
}
close();
}
구현 클래스
하위 클래스들은 추상 클래스에서 정의한 추상 메서드를 구현하여, 템플릿 메서드가 수행하는 로직의 세부 사항을 결정한다.
public class CharDisplay extends AbstractDisplay {
private char ch;
public CharDisplay (char ch) {
this.ch = ch;
}
public void open() {
System.out.print("<<");
}
public void print() {
System.out.print(ch);
}
public void close() {
System.out.print(">>");
}
}
장점은?
- 로직을 공통화 할 수 있다!
- 추상 메서드의 구현은 하위 클래스에 따라 달라지지만, 템플릿 메서드는 동일한 로직을 유지한다.
- 따라서 하위 클래스는 세부 구현만 담당하고, 알고리즘의 흐름을 일일이 정의할 필요가 없다.
'Programming > 디자인 패턴' 카테고리의 다른 글
데코레이터 패턴(Decorator Pattern) (0) | 2021.12.18 |
---|---|
컴포지트 패턴(Composition Pattern) (0) | 2021.12.14 |
커맨드 패턴 (0) | 2021.12.12 |
프록시 패턴 (0) | 2021.12.11 |