영화 예매 시스템에서의
Screening → Movie
calculateMovieFee(..) 메서드를 호출(메세지전송) 하면서, 협력관계를 보이지만
Screening → Movie는 의존관계
Movie의 내용부가 바뀌면 그를 호출하는 Screening에게도 영향이 가게된다.
어찌보면 Screening이 상위기능하라고 한다면
Movie내에 영화요금계산메서드는 하위기능이라고 볼 수 있다.
고수준에서 저수준을 의존한다면 저수준이 바뀔때 고수준에도 영향을 받게된다.
때문에 같은 고수준의 인터페이스를 만들어서 고수준의 인터페이스를 사용하고, 구현은 저수준의 인터페이스가 하는게 맞다.
이를 DIP라고한다.