인프런, 객체 지향 프로그래밍 입문 - 7

StarSeeker·2023년 3월 10일
0

DIP

  • 고수준 모듈
    의미 있는 단일 기능을 제공, 상위 수준의 정책을 구현

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

    고수준 모듈 -> 저수준 모듈
    도면 이미지를 저장한다. -> NAS에 이미지를 저장한다.
    측정 정보를 저장한다. -> MEAS_INFO 테이블에 저장한다.

    하지만, 고수준이 저수준에 직접 의존한다면?

    저수준 구현이 변경되면 고수준 정책이 바뀌지 않았어도 코드의 변경이 발생한다.

    어떻게 해결할까?
    의존 역전 원칙!

  • 고수준 모듈은 저수준 모듈의 구현에 의존하면 안된다.

  • 저수준 모듈이 고수준 모듈에서 정의한 추상타입에 의존해야한다! -> 이것이 DIP

  • 이때 고수준 관점에서 추상화 해야한다.
    고수준 입장에서 저수준 모듈을 추상화!
    구현하는 입장에서 추상화하지 말 것.

    결과적으로,
    고수준 모듈의 변경을 최소화하면서 저수준 모듈의 변경 유연함을 높일수 있다.

  • 단, 처음부터 바로 좋은 설계가 나오지는 않는다.

  • 업무에 대한 이해가 높아지면서 저수준 모듈을 인지하고 상위수준 관점에서 저수준 모듈에 대한 추상화를 시도한다.

profile
춤추듯 개발하고 싶은 사람

0개의 댓글