Skip to content

Latest commit

 

History

History
81 lines (52 loc) · 2.71 KB

템플릿 메소드 패턴.md

File metadata and controls

81 lines (52 loc) · 2.71 KB

템플릿 메소드 패턴

템플릿 메소드 패턴이란?

  • 상속을 통한 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다.
  • 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴이다.
  • 변하지 않는 기능은 슈퍼클래스에 만들어주고 자주 변경되며 확장할 기능은 서브 클래스에서 만든다.
  • 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화 할 때 유용하다.

템플릿 메소드 패턴 예제

public class TemplateMethodPatternClient {
    public static void main(String[] args) {
        AbstractClass abstractClass = new ConcreteClass();
        abstractClass.templateMethod();
    }
}
public abstract class AbstractClass {
    protected abstract void hook1();  
    protected abstract void hook2();
    
    public void templateMethod() {
        hook1();
        hook2();
    }
}
public class ConcreteClass extends AbstractClass {
    @Override
    protected void hook1() {
        System.out.println("ABSTRACT hook1 implementation");
    }

    @Override
    protected void hook2() {
        System.out.println("ABSTRACT hook2 implementation");
    }
}
  • 역할

    • AbstractClass

      • 템플릿 메소드를 정의하는 클래스
      • 하위 클래스에 공통 알고리즘을 정의하고 하위 클래스에서 구현될 기능을 primitive 메소드 또는 hook 메소드로 정의하는 클래스
    • ConcreteClass

      • 물려받은 primitive 메소드 또는 hook 메소드를 구현하는 클래스
      • 상위 클래스에 구현된 템플릿 메소드의 일반적인 알고리즘에서 하위 클래스에 적합하게 primitive 메소드나 hook 메소드를 오바라이드하는 클래스
  • 추상클래스인 AbstractClass 에는 실제로 실행을 위해 호출 될 public 메소드인 templateMethod가 있다.

  • templateMethod 내부에는 hook1 -> hook2 의 단계를 가지는 추상메소드가 호출된다.

  • 추상메소드들은 AbstractClass 를 상속받아 구현한 ConcreteClass 에서 구체적인 구현이 정의된다.

참고 블로그

한 줄 요약

  • 템플릿 메소드 패턴 : 변하지 않는 기능은 슈퍼클래스에 만들어주고 자주 변경되며 확장할 기능은 서브 클래스에 작성하는 방법