Contents
1. 템플릿 패턴이란?템플릿 메서드 패턴은 알고리즘의 구조를 정의하고, 일부 단계는 서브클래스에서 구현하도록 하는 디자인 패턴이다.
1. 템플릿 패턴이란?
템플릿 메서드 패턴은 알고리즘의 뼈대를 정의하고, 알고리즘의 일부 단계를 서브클래스에서 구현하도록 하는 패턴이다.
이 패턴은 공통적인 처리 로직을 상위 클래스에서 정의하고, 변하는 부분은 하위 클래스에서 구현함으로써 코드 중복을 줄이고, 알고리즘의 구조를 일관되게 유지한다.
1.1 예제
다양한 종류의 선생님들이 공통적으로 수업을 진행하는 방식이 있지만, 각 선생님이 담당하는 강의 내용은 다르다.
템플릿 메서드 패턴을 사용하여 공통적인 수업 프로세스를 정의하고, 각 선생님이 강의 내용을 다르게 구현하도록 할 수 있다.

public abstract class Teacher {
//템플릿 메서드
public void 수업하기(){
입장하기();
출석부르기();
강의하기();
퇴장하기();
}
//공통 메서드
public void 입장하기(){
System.out.println("입장하기~");
}
public void 출석부르기(){
System.out.println("출석부를게~");
}
public void 퇴장하기(){
System.out.println("수업끝, 간다.");
}
//서브클래스에서 구현
public abstract void 강의하기();
}
public class PythonTeacher extends Teacher{
@Override
public void 강의하기() {
System.out.println("파이썬 강의하기");
}
}
public class HTMLTeacher extends Teacher {
@Override
public void 강의하기() {
System.out.println("HTML 강의하기");
}
}
1.2 템플릿 패턴의 장점
- 코드 재사용: 공통적인 로직을 상위 클래스에 정의함으로써 코드 중복을 줄일 수 있다.
- 알고리즘의 구조화: 알고리즘의 구조를 명확히 정의하여 일관된 방식으로 처리할 수 있다.
- 유지보수 용이: 공통 부분의 변경이 상위 클래스에서만 이루어지므로 유지보수가 용이하다.
1.4 템플릿 패턴의 단점
- 상속의 사용: 상위 클래스에 의존하므로, 클래스가 복잡해질 수 있다. 또한, 상속 관계가 길어질 경우 이해하기 어려울 수 있다.
- 코드 유연성 감소: 공통 로직의 수정이 모든 서브클래스에 영향을 미칠 수 있으며, 특정 부분만 변경하기 어려울 수 있다.
결론
템플릿 메서드 패턴은 알고리즘의 구조를 정의하고, 변동 부분만을 서브클래스에서 구현할 수 있도록 하여 코드의 일관성과 재사용성을 높여준다. 이 패턴을 사용하면 공통적인 처리 로직을 상위 클래스에서 관리하고, 하위 클래스에서는 세부 사항만 구현함으로써 코드의 유지보수와 확장성을 높일 수 있다.
그러나 상속 관계의 복잡성과 코드의 유연성 감소를 고려하여 적절한 상황에서 사용하는 것이 중요하다.
Share article