[Java] 디자인패턴 : 템플릿 메서드(Template Method) 패턴

템플릿 메서드 패턴은 알고리즘의 구조를 정의하고, 일부 단계는 서브클래스에서 구현하도록 하는 디자인 패턴이다.
HootJem's avatar
Aug 14, 2024
[Java] 디자인패턴 : 템플릿 메서드(Template Method) 패턴
💡
템플릿 메서드 패턴은 알고리즘의 구조를 정의하고, 일부 단계는 서브클래스에서 구현하도록 하는 디자인 패턴이다.

1. 템플릿 패턴이란?

템플릿 메서드 패턴은 알고리즘의 뼈대를 정의하고, 알고리즘의 일부 단계를 서브클래스에서 구현하도록 하는 패턴이다.
이 패턴은 공통적인 처리 로직을 상위 클래스에서 정의하고, 변하는 부분은 하위 클래스에서 구현함으로써 코드 중복을 줄이고, 알고리즘의 구조를 일관되게 유지한다.

1.1 예제

다양한 종류의 선생님들이 공통적으로 수업을 진행하는 방식이 있지만, 각 선생님이 담당하는 강의 내용은 다르다.
템플릿 메서드 패턴을 사용하여 공통적인 수업 프로세스를 정의하고, 각 선생님이 강의 내용을 다르게 구현하도록 할 수 있다.
notion image
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

[HootJem] 개발 기록 블로그