Home 6.DIP
Post
Cancel

6.DIP

고수준 모듈, 저수준 모듈

고수준 모듈

  • 의미 있는 단일 기능 제공
  • 상위 수준의 정책 구현

저수준 모듈

  • 고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능 실제 구현

Screenshot 2022-11-13 at 22.51.55.png

고수준이 저수준에 직접 의존하면..?

  • 저수준 모듈 변경 → 고수준 모듈에 영향을 줌

Dependency Inversion Principle (DIP)

  • 의존 역전 원칙
    • 고수준 모듈은 저수준 모듈 구현에 의존하면 안됨
    • 저수준 모듈리 고수준 모듈에서 정의한 추상타입에 의존해야함

Screenshot 2022-11-13 at 22.54.10.png

고수준 관점에서 추상화

  • 구현 입장에서 추상화하지 말 것!

Screenshot 2022-11-13 at 22.55.41.png

어떠한 Exception이 발생하면 Sentry라는 곳으로 Exception을 수집한다고 할 때
저수준 입장에서 추상화하면 SentryService라는 추상타입이 도출하게 됨
하지만
고수준 입장에서 추상화하면 ExceptionCollector 라는 추상타입이 도출하게됨

DIP는 유연함을 높임

  • 고수준 모듈의 변경을 최소화하면서 저수준 모듈의 변경 유연함을 높임

Screenshot 2022-11-13 at 22.57.53.png

Sentry로 보내는 대신 ES로 보내도록 수정이 필요한 경우 ES로 보내는 클래스를 만들기만 하면된다.

부단한 추상화 노력 필요…

처음부터 바로 좋은 설계가 나오지않음

This post is licensed under CC BY 4.0 by the author.

5.의존과 DI

3.상속보단 조립