WebApiExRateProvider 에서 API를 특정 기술을 이용해서 실행하고 그 응답 결과를 돌려주는 메서드를 인터페이스와 인터페이스를 구현한 클래스로 독립

분리한 클래스 구조 다이어그램

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»

이처럼 분리하기만 한다고 해서 템플릿을 사용하는 장점을 누릴 수 없음