Programming/디자인 패턴

Template Method Pattern

사랑우주인 2024. 10. 14. 15:13

템플릿이란?

  • 템플릿 == 문자형 틀
  • 예를 들어, 색연필로 색칠할 때 색상은 바뀌어도 문자형은 유지되는 것처럼, 상위 클래스의 틀을 통해 기본적인 로직은 동일하게 유지

템플릿 메서드 패턴이란?

상위 클래스에서 처리의 뼈대를 결정하고 하위 클래스에서 그 구체적인 내용을 결정하는 패턴이다.

구성(추상 클래스 + 구현 클래스)

추상 클래스

  • 추상 클래스는 하위 클래스에서 구현할 것으로 기대하는 추상 메서드와 로직의 뼈대가 되는 템플릿 메서드로 구성된다.
  • 템플릿 메서드는 구체적인 로직의 순서를 정의한 일반 메서드로, 추상 메서드의 조합을 통해 알고리즘을 구성한다.
  • 템플릿 메서드 == 알고리즘
Public abstract class AbstractDisplay {
// 추상화 메서드(== 뼈대)
     public abstract void open();
     public abstract void print();
     public abstract void close();
 // 템플릿 메서드(== 알고리즘, 로직)
     public final void display()  {
            open();
            for (int i = 0; i < 5; i++)  {

                  print();
            }
             close();
 }

 

구현 클래스

하위 클래스들은 추상 클래스에서 정의한 추상 메서드를 구현하여, 템플릿 메서드가 수행하는 로직의 세부 사항을 결정한다.

public class CharDisplay extends AbstractDisplay  {
private char ch;
public CharDisplay (char ch)  {
         this.ch = ch;
}
public void open()  {
    System.out.print("<<");
}
public void print()   {
      System.out.print(ch);
}
public void close()  {
   System.out.print(">>");
}
}

장점은?

  • 로직을 공통화 할 수 있다!
  • 추상 메서드의 구현은 하위 클래스에 따라 달라지지만, 템플릿 메서드는 동일한 로직을 유지한다.
  • 따라서 하위 클래스는 세부 구현만 담당하고, 알고리즘의 흐름을 일일이 정의할 필요가 없다.