classDiagram
direction BT
class ApiExcutor {
<<Interface>>
+ execute(URI) String
}
class SimpleApiExecutor {
+ SimpleApiExecutor()
+ execute(URI) String
}
class WebApiExRateProvider {
+ WebApiExRateProvider()
- extractExRate(String) BigDecimal
- runApiForExRate(String) BigDecimal
+ getExRate(String) BigDecimal
}
SimpleApiExecutor ..> ApiExcutor
WebApiExRateProvider ..> SimpleApiExecutor : «create»
이처럼 분리하기만 한다고 해서 템플릿을 사용하는 장점을 누릴 수 없음
⇒ ApiExecutor를 콜백으로 만들면 장점을 누릴 수 있음
템플릿 : 콜백과 같이 함께 등장을 함. 전략 패턴의 일종이며, 전략 패턴 중에서도 특별한 케이스에 해당
전략 패턴
템플릿은 전략 패턴의 컨텍스트
콜백은 전략 패턴의 전략
콜백이 템플릿의 메서드로 전달되는 과정을 메서드 주입이라고 함