1. 인터페이스 도입

image.png

디자인 패턴의 대부분이 인터페이스 구조로 이루어져 있음(70%)

인터페이스를 사용했을 때 장점

  1. PaymentService가 ExRateProvider에만 의존

그러나

생성자 내부에서 구체적인 클래스로 명시해서 객체 생성 하는 경우

    public PaymentService() {
		    // this.exRateProvider = new SimpleExRateProvider();
        this.exRateProvider = new WebApiExRateProvider();
    }

이와 같이 사용하게 되면 인터페이스가 아닌 구체적인 클래스에 의존하게 되어있음

image.png

코드레벨의 의존관계

PaymentService가 어떤 클래스의 Object를 사용하게 할 것인가가 “관계 설정”을 뜻 함

(의존하는 코드는 극히 적지만 클래스 레벨에 의존하고 있는 상황)

런타임에서는 ObjectObject를 의존하는 관계가 됨

image.png

오브젝트 다이어그램(런타임시 동작하는 구조를 보여줌)