Dependency Inversion Principle(DIP)

  1. 상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안된다. 둘 모두 추상화에 의존해야 한다.
  2. 추상화는 구체적인 사항에 의존해서는 안된다. 구체적인 사항은 추상화에 의존해야 한다.

모듈?

우리의 코드를 모듈로 구분해보자

image.png

  1. Payment와 관련된 정책과 비즈니스 핵심 로직 모듈 (상위)
  2. 환율 정보를 어떻게 가져올 것인지 관심이 담긴 모듈 (하위)

런타임에 어떻게 사용이 되는가

PaymentService 오브젝트가 WebApiExRateProvider 오브젝트를 사용

image.png

그렇기 때문에 코드 레벨에서도 의존관계가 아래의 그림과 같이 만들어 지는 것임

image.png