클래스를 변경해야 할 때 PaymentService
에 관련된 기능들을 모두 건드려야되는 단점이 존재
해결하기위해서는 독립적인 인터페이스를 도입하면 됨
인터페이스 타입으로 PaymentService
쪽에서 사용하게 만들면
메서드 이름이 달라진다고 PaymentService
를 고쳐야되는 상황은 피할 수 있게 됨
ExRateProvider
public interface ExRateProvicer {
BigDecimal getWebExRate(String currency) throws IOException;
}
참고로 인터페이스는 기본적으로 모든 메서드가 public
인터페이스를 적용하게 되면
새로운 환율을 가져오는 코드를 추가하더라도 최소한의 부분만 수정하더라도 잘 작동하는 것을 위의 PaymentService
를 통해 확인할 수 있었음
하나의 클래스에서 의존하는(사용하는) 다른 클래스들이 있을 때 그 안에 인터페이스를 정해두고 인터페이스 타입으로 사용하게 만들면
그 인터페이스를 구현한 다른 클래스를 추가할 때 적용해야되는 코드를 최소화 할 수 있음