정의
- 전략 패턴의 변형 패턴
- 스프링 FW 에서 특히 자주 사용되는 디자인 패턴
- DI - 의존성 주입 : 에서 사용하는 특별한 형태의 전략 패턴
특징
- 전략 패턴과 구조적으로 유사함.
- 전략을 익명 내부 클래스로 정의하여 사용
- 별도의 전략 파일을 따로 정의할 필요가 없음
동작방식
- 템플릿 메서드에서 실행되어야 하는 특정한 알고리즘의 일부분을 콜백 메서드로 정의
- 콜백 메서드의 구현을 템플릿 메서드에서 호출하는 클라이언트에서 제공
- 콜백 메서드의 구현은 익명 내부 클래스 형태로 제공됨.
장점
- 별도 전략 클래스 파일 정의 필요 X
- 코드의 양 줄어듬.
- 관련 코드를 한 곳에서 보기 용이
- 동적으로 전략의 구현을 변경 혹은 제공이 용이함.
코드
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
'자바 > 스프링입문객체지향' 카테고리의 다른 글
[6단원]디자인 패턴 - 프록시 패턴 추가예제 (0) | 2023.10.01 |
---|---|
[6단원]디자인 패턴 - 전략 패턴 (Strategy Pattern) (0) | 2023.09.23 |
[6단원]디자인 패턴 - 싱글턴 패턴 (Singleton Pattern) (0) | 2023.09.21 |
[6단원]디자인 패턴 - 템플릿 메서드 패턴 ( Template Method Pattern) (0) | 2023.09.21 |
[6단원]디자인 패턴 - 개요 (0) | 2023.09.15 |