인터페이스 도입과 클래스 분리 다이어그램

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를 콜백으로 만들면 장점을 누릴 수 있음

콜백(Callback)

템플릿/콜백은 전략 패턴의 특별한 케이스

템플릿 : 콜백과 같이 함께 등장을 함. 전략 패턴의 일종이며, 전략 패턴 중에서도 특별한 케이스에 해당

메서드 주입

콜백이 템플릿의 메서드로 전달되는 과정을 메서드 주입이라고 함