영화 예매 시스템에서의

Screening → Movie

calculateMovieFee(..) 메서드를 호출(메세지전송) 하면서, 협력관계를 보이지만

Screening → Movie는 의존관계

Movie의 내용부가 바뀌면 그를 호출하는 Screening에게도 영향이 가게된다.

어찌보면 Screening이 상위기능하라고 한다면

Movie내에 영화요금계산메서드는 하위기능이라고 볼 수 있다.

고수준에서 저수준을 의존한다면 저수준이 바뀔때 고수준에도 영향을 받게된다.

때문에 같은 고수준의 인터페이스를 만들어서 고수준의 인터페이스를 사용하고, 구현은 저수준의 인터페이스가 하는게 맞다.

이를 DIP라고한다.