탬플릿 콜백 패턴은 전략 패턴의 변형으로, DI에서 사용하는 특별한 형태의 전략 패턴이다.
익명 내부 클래스를 이용해서 전략 객체를 만든다. 그 외에는 전략 패턴과 동일하다.
따라서 OCP와 DIP를 따른다.
코드를 간단히 하기 위해서 컨텍스트 내부에 익명 내부 클래스를 만드는 부분을 만들었다.
package OOP06.templateCallbachPattern;
public interface Weapon {
abstract void useWeapon();
}
package OOP06.templateCallbachPattern;
public class Soldier {
void fight_Against(String weaponSound){
System.out.println("전투 시작");
executeWeapon(weaponSound).useWeapon();
System.out.println("전투 종료");
}
private Weapon executeWeapon(final String weaponSound){
return new Weapon() {
@Override
public void useWeapon() {
System.out.println(weaponSound);
}
};
}
package OOP06.templateCallbachPattern;
public class Client {
public static void main(String[] args) {
Soldier soldier = new Soldier();
soldier.fight_Against("🔫");
soldier.fight_Against("🗡️");
}
}
실행화면
전투 시작
🔫
전투 종료
전투 시작
🗡️
전투 종료