자바 디자인 패턴 중 빈번하게 사용되는 템플릿 메소드 패턴에 대해서 정리하는 자기 참조용 글이다.
디자인 패턴 : https://velog.io/@yjw8459/Spring-Design-Pattern
소스코드의 알고리즘에서 상황에 맞게 확장이나 변경해야할 때, 여러 중복 코드들을 하나로 그룹핑할 때 유용하게 사용될 수 있다.
public abstract class Super {
public void templateMethod(){
hookMethod(); //그룹핑 한 공통 로직
abstractMethod(); //Super를 상속한 각 객체는 별도의 로직을 구성
}
protected void hookMethod() {
System.out.println("공통 로직");
}
public abstract void abstractMethod();
}
public class Sub extends Super{
@Override
public void abstractMethod() {
System.out.println("클래스 별로 다른 로직 구현");
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.templateMethod();
}
}
templateMethod()를 작업의 구조라고 생각해보자.
작업 중에서 abstractMethod()부분을 서브 클래스로 캡슐화하여 구조를 변경하지 않고 수정할 때 abstractMethod()를 오버라이드하여 사용한다.
본래 구조를 지키며 일 부분만 별도의 로직을 구성할 수 있다.
정리
템플릿 메소드 패턴을 사용해서 부모 클래스로 자식 클래스의 공통적인 구조 및 패턴을 만들어준다.
그리고 핵심 비즈니스 로직만 자식 클래스에서 오버라이딩하여 사용한다.
빈번하게 발생하는 중복 코드를 줄일 수 있고, 자식 클래스의 추가 및 확장을 훨씬 쉽게 할 수 있다.
즉, 템플릿 메소드 패턴을 사용해서 부모클래스로 자식클래스들의 공통적인 구조 및 패턴을 만들어주고
핵심 비즈니스 로직만 자식 클래스에서 오버라이딩하여 사용한다.
빈번하게 발생하는 중복 코드의 경우는 부모 클래스의 일반 메소드로 선언해서 자식 클래스에서 사용한다.
이런 구조를 가질 경우 자식 클래스의 추가 및 확장을 훨씬 쉽게 할 수 있다.