[디자인 패턴] 8. 템플릿 메서드 패턴

lhs's avatar
Nov 13, 2024
[디자인 패턴] 8. 템플릿 메서드 패턴
💡
템플릿 메서드 패턴은 상위 클래스를 만들어 하위 클래스에 구현하는 기법이다.
 

1. 정의

템플릿 메서드 패턴(Template Method Pattern)은 행동 패턴(Behavioral Pattern) 중 하나로, 알고리즘의 구조를 정의하고, 세부 구현은 서브클래스에 위임하는 디자인 패턴이다. 이 패턴은 알고리즘의 일부분은 상위 클래스에서 정의하고, 알고리즘의 변경 가능하고 구체적인 부분은 하위 클래스에서 구현하도록 하여 재사용성과 확장성을 높인다.

2. 예제 코드

public interface Teachable { public abstract void 수업하기(); }
Teachable.java
 
public abstract class Teacher implements Teachable { @Override public void 수업하기() { 입장하기(); 출석부르기(); 강의하기(); 퇴장하기(); } protected void 입장하기() { System.out.println("입장하기"); } protected void 출석부르기() { System.out.println("출석부르기"); } protected abstract void 강의하기(); protected void 퇴장하기() { System.out.println("퇴장하기"); } }
Teacher.java
 
public class JavaTeacher extends Teacher { @Override protected void 강의하기() { System.out.println("자바강의하기"); } }
JavaTeacher.java
 
public class PythonTeacher extends Teacher { @Override protected void 강의하기() { System.out.println("파이썬강의하기"); } }
PythonTeacher.java

3. 정리

  • Teachable 인터페이스
    • 수업하기() 메서드를 정의한 인터페이스이다.
  • Teacher 클래스
    • Teachable수업하기() 메서드를 구현하고 고정된 흐름을 설정한 템플릿 클래스이다.
    • 입장하기(), 출석부르기(), 퇴장하기() 메서드는 변경되지 않는 부분으로 Teacher에서 구현했다.
    • 강의하기() 메서드는 하위에서 구현하도록 abstract로 선언했다.
  • JavaTeacher, PythonTeacher 클래스
    • Teacher의 하위 클래스로 강의하기() 내용을 구현했다.
Share article

LHS's Study Space