(18) : template method pattern

1298 단어 SpringSpring

서론


이번 포스팅도 마찬가지로 토비의 스프링 1권에서 소개하는 패턴 중 하나인 템플릿 패턴이다. 이는 3장 전체를 설명해주는 핵심 개념으로 JDBC 커넥션을 리팩토링하기 위해 소개하는 패턴이다.

템플릿 메소드 패턴이란

상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 한다. – 토비의 스프링 3.1

위에서 언급한 바와 같이 DB connection 은 고정하고, sql만 따로 처리하고 싶을때 활용할 수 있다.

예제

간단한 예제를 통해 확인해보면 쉽게 이해할 수 있다. 아래는 구현하고자 하는 클래스의 UML이다.

  • 추상 클래스
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");
    }

}

위와 같이 추상클래스에서 hook1(), hook2() 메소드를 순차적으로 활용하는 templateMethod()를 구체화하고, 구체 클래스에서 각 hook1(), hook2()를 오버라이딩하여 원하는대로 동작할 수 있게 만들어주는 전략이다.

좋은 웹페이지 즐겨찾기