고수준 모듈
의미 있는 단일 기능을 제공, 상위 수준의 정책을 구현
저수준 모듈
고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능의 실제 구현
고수준 모듈 -> 저수준 모듈
도면 이미지를 저장한다. -> NAS에 이미지를 저장한다.
측정 정보를 저장한다. -> MEAS_INFO 테이블에 저장한다.
하지만, 고수준이 저수준에 직접 의존한다면?
저수준 구현이 변경되면 고수준 정책이 바뀌지 않았어도 코드의 변경이 발생한다.
어떻게 해결할까?
의존 역전 원칙!
고수준 모듈은 저수준 모듈의 구현에 의존하면 안된다.
저수준 모듈이 고수준 모듈에서 정의한 추상타입에 의존해야한다! -> 이것이 DIP
이때 고수준 관점에서 추상화 해야한다.
고수준 입장에서 저수준 모듈을 추상화!
구현하는 입장에서 추상화하지 말 것.
결과적으로,
고수준 모듈의 변경을 최소화하면서 저수준 모듈의 변경 유연함을 높일수 있다.
단, 처음부터 바로 좋은 설계가 나오지는 않는다.
업무에 대한 이해가 높아지면서 저수준 모듈을 인지하고 상위수준 관점에서 저수준 모듈에 대한 추상화를 시도한다.