[6단원]디자인 패턴 - 템플릿 콜백 패턴(Template Callback Pattern - 견본/회신 패턴)

정의

  1. 전략 패턴의 변형 패턴
  1. 스프링 FW 에서 특히 자주 사용되는 디자인 패턴
  1. DI - 의존성 주입 : 에서 사용하는 특별한 형태의 전략 패턴

특징

  • 전략 패턴과 구조적으로 유사함.
  • 전략을 익명 내부 클래스로 정의하여 사용
    • 별도의 전략 파일을 따로 정의할 필요가 없음

동작방식

  • 템플릿 메서드에서 실행되어야 하는 특정한 알고리즘의 일부분을 콜백 메서드로 정의
  • 콜백 메서드의 구현을 템플릿 메서드에서 호출하는 클라이언트에서 제공
  • 콜백 메서드의 구현은 익명 내부 클래스 형태로 제공됨.

장점

  1. 별도 전략 클래스 파일 정의 필요 X
    1. 코드의 양 줄어듬.
    1. 관련 코드를 한 곳에서 보기 용이
  1. 동적으로 전략의 구현을 변경 혹은 제공이 용이함.

코드

public interface Strategy {
    public abstract void runStrategy();
}
public class Soldier {
    void runContext(String weaponSound) {
        System.out.println("전투 시작");
        this.executeWeapon(weaponSound);
        System.out.println("전투 종료");
    }
    
    private Strategy executeWeapon(final String weaponSound) {
        return new Strategy() {
            @Override
            public void runStrategy() {
                System.out.println(weaponSound);
            }
        };
    }
    
}
  • 기존 전략 패턴 구조에서 전략 객체를 생성하여 주입하는 부분을
  • 템플릿 콜백 패턴에서는 익명 내부 클래스를 이용하여 바로 구현하고 주입가능함.
public class Client {
    public static void main(String[] args) {
        Soldier rambo = new Soldier();
        
        rambo.runContext("총");
        
        System.out.println();
        
        rambo.runContext("검");
        
        System.out.println();
        
        rambo.runContext("활");
    }
}


Uploaded by N2T