[ 목차 ]
안녕하세요. JAVA 디자인패턴 중 템플릿 메서드(Template Method) 패턴에 대해서 알아볼까요?
템플릿 메서드(Template Method) 패턴 이란?
템플릿 메서드 패턴은 알고리즘의 골격을 제공하고, 일부 단계를 하위 클래스에서 구현하도록 하는 행동 패턴입니다. 이 패턴을 사용하면 알고리즘의 구조를 변경하지 않고, 코드 재사용을 통해 알고리즘의 일부 단계를 확장 및 수정할 수 있습니다.
템플릿 메서드(Template Method) 패턴 구현 방법
템플릿 메서드 패턴을 구현하기 위해 다음 요소들이 필요합니다.
- AbstractClass: 템플릿 메서드를 포함하고, 구체적인 단계들을 정의한 추상 클래스입니다.
- ConcreteClass: AbstractClass를 상속받아 구체적인 사항들을 구현한 클래스입니다.
// AbstractClass
public abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
// 템플릿 메서드
public final void play() {
initialize();
startPlay();
endPlay();
}
}
// ConcreteClass
public class SoccerGame extends Game {
@Override
void initialize() {
System.out.println("Soccer game initialized!");
}
@Override
void startPlay() {
System.out.println("Soccer game started!");
}
@Override
void endPlay() {
System.out.println("Soccer game finished!");
}
}
// 클라이언트 코드
public class Main {
public static void main(String[] args) {
Game game = new SoccerGame();
game.play(); // 출력: Soccer game initialized! Soccer game started! Soccer game finished!
}
}
템플릿 메서드(Template Method) 패턴의 장단점
장점
- 중복 코드의 제거 및 코드 재사용이 가능합니다. 공통 로직은 기본 클래스에 있으므로 하위 클래스에서는 변화하는 부분만 구현하면 됩니다.
- 유지 및 확장이 쉽습니다. 변경이 필요한 부분만 상속받아 구현하므로, 기본 알고리즘에 영향을 주지 않으면서 새로운 기능을 추가할 수 있습니다.
- 코드 구조가 명확하고 이해하기 쉽습니다.
단점
- 추가하거나 수정할 단계가 많아지면 복잡성이 증가할 수 있습니다.
- 상속을 통한 기능 확장이므로 클래스 간의 강한 결합이 존재할 수 있습니다.
템플릿 메서드(Template Method) 패턴의 활용 예
템플릿 메서드 패턴은 다음과 같은 상황에서 유용하게 사용됩니다.
- 여러 관련 알고리즘이 있고, 각 알고리즘마다 공통된 전체 구조와 단계별 차이점이 있는 경우(예: 데이터 처리 알고리즘, 게임 유형별 게임 흐름 등)
- 공통 프로세스를 담고 있는 기본 프레임워크를 제공하고, 사용자가 커스터마이징 할 수 있는 시스템을 제공할 때 이 패턴은 재사용 및 확장성 때문에 다양한 애플리케이션에서 사용되며, 특히 프레임워크 및 공통 라이브러리에서 흔히 발견됩니다.
2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴
2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴
2023.07.12 - [JAVA] - 디자인패턴 - 어댑터(Adapter) 패턴
2023.07.12 - [JAVA] - JAVA 디자인패턴 - 싱글톤(Singleton) 패턴
2023.07.13 - [JAVA] - JAVA 디자인패턴 - 옵저버(Observer) 패턴
2023.07.13 - [JAVA] - JAVA 디자인패턴 - 데코레이터(Decorator) 패턴
2023.07.14 - [JAVA] - JAVA 디자인패턴 - 프록시(Proxy) 패턴
2023.07.14 - [JAVA] - JAVA 디자인 패턴 - 커맨드(Command) 패턴
2023.07.15 - [JAVA] - JAVA 디자인패턴 - 스트래티지(Strategy) 패턴
'JAVA' 카테고리의 다른 글
JAVA 디자인패턴 - 상태(State) 패턴의 정의, 구성요소, 구현, 장단점 (0) | 2023.07.17 |
---|---|
JAVA 디자인패턴 - 컴포지트(Composite) 패턴 (0) | 2023.07.17 |
JAVA 디자인패턴 - 스트래티지(Strategy) 패턴 (0) | 2023.07.15 |
JAVA 디자인 패턴 - 커맨드(Command) 패턴 (0) | 2023.07.14 |
JAVA 디자인패턴 - 프록시(Proxy) 패턴 (0) | 2023.07.14 |
댓글