템플릿 메서드(Template Method) 패턴이란?
템플릿 메서드 패턴은 수행하는 로직의 순서와 단계는 동일하지만 서브클래스에 그 세부 로직을 다르게 하는 디자인 패턴이다.
게임을 예시로 들면 종목은 다르지만 모든 게임은 initialize -> startPlay -> endPlay라는 순서가 동일한 play라는 행위를 수행하지만 어떤 게임(ex. Criket, Football)인지에 따라 그 세부 로직은 다르다.
abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
// 템플릿 메소드
public final void play() {
// 게임 초기화
initialize();
// 게임 시작
startPlay();
// 게임 종료
endPlay();
}
}
게임 종목이 달라도 모든 서브클래스는 play의 로직은 동일하게 수행하기 때문에 final로 선언된다.
class Cricket extends Game {
@Override
void initialize() {
System.out.println("크리켓: 게임 초기화 중");
}
@Override
void startPlay() {
System.out.println("크리켓: 게임 시작!");
}
@Override
void endPlay() {
System.out.println("크리켓: 게임 종료!");
}
}
class Football extends Game {
@Override
void initialize() {
System.out.println("축구: 게임 초기화 중");
}
@Override
void startPlay() {
System.out.println("축구: 게임 시작!");
}
@Override
void endPlay() {
System.out.println("축구: 게임 종료!");
}
}
구체적인 종목에 따라 세부로 직을 구현한다.
public class TemplatePatternDemo {
public static void main(String[] args) {
Game game = new Cricket();
game.play();
System.out.println();
game = new Football();
game.play();
}
}
'자바' 카테고리의 다른 글
[디자인 패턴] 프록시(Proxy) 패턴 (0) | 2024.03.20 |
---|---|
[디자인 패턴] 팩토리 메서드(Factory Method) 패턴 (0) | 2024.03.17 |
[디자인 패턴] 싱글톤(Singleton) 패턴 (0) | 2024.03.15 |
컬렉션 프레임워크(Collection Framework) (0) | 2022.12.09 |
Auto Boxing/UnBoxing (0) | 2022.12.09 |