템플릿은 콜백과 같이 구현할 필요가 없음
여러가지 종류의 템플릿으로 확장될 필요가 없기 때문 ⇒ 바로 클래스로 정의해도 상관 없음
WebApiExRateProvider
의 runApiForExRate
메서드를 ApiTemplate
클래스로 분리 후 getExRate
로 메서드 명 변경
참고 메서드명이나 클래스명 작성할때 추후 어떤 목적을 가진 것인지 고민하느라 시간을 낭비하지 않도록 적절한 이름을 잘 붙여주고, 영어로 이름 지을 때는 설명이 충분하지 않은 경우가 많으므로 필요할 때 적절한 코멘트를 추가해 줄 것
템플릿은 안에 상태값을 가지고 계속 변경되는 것이 아니고 서버에서 동작한다 하더라도 여러 유저의 요청을 처리하는 멀티스레드에서 같이 사용해도 안전하므로 공유해도 됨
ApiTemplate apiTemplate = new ApiTemplate();
를 위로 올려서 클래스의 인스턴스가 만들어질 때 딱 하나만 만들어지도록 해서
재사용하도록 만드는 것이 좋음콜백을 인터페이스를 정의하여 클래스를 만들긴 하였지만 구현 클래스 한개만 만들어 봤기 때문에 변경해보는 작업을 수행
SimpleApiExecutor()
는 자바의 굉장히 오래된 URLConnection
과 같은 클래스를 사용하는 것인데 그대로 사용해도 되지만
WebAPI가 많이 사용되면서 API를 호출할 때 신경써야될게 많은 작업들을 원시적인 기능을 이용해서 사용하는 것은 불편한 점이 많아져 오픈소스 기술들이 많이 나오게 되었음(Apache의 HTTP 클라이언트 등)