본문

DIP(Dependency Inversion Principle) : 의존 역전 원칙

반응형

"자신보다 변하기 쉬운 것에 의존하지 마라."

자동차와 스노우타이어 사이에는 [그림1]처럼 의존 관계가 있다. 자동차가 스노우타이어에 의존한다.

 

 

[그림1] 의존 역전 원칙 적용 전(자주 변경되는 구체 클래스에 의존)

 

그런데 자동차는 한 번 사면 몇 년은 타야 하는데 스노우타이어는 계절이 바뀌면 일반 타이어로 교체해야 한다. 이런 경우 스노우타이어를 일반타이어로 교체할 때 자동차는 그 영향에 노출돼 있음을 알 수 있다. 바로 자동차 자신보다 더 자주 변하는 스노우타이어에 의존하기에 부서지기 쉬움이라는 나쁜 냄새를 풍기고 있는 것이다. 그럼 이런 경우 나쁜 냄새가 좋은 향기가 되도록 개선해 보자.

 

 

[그림2] 의존 역전 원칙 적용 후

 

[그림2]와 같이 자동차가 구체적인 타이어들(스노우타이어, 일반타이어, 광폭타이어)이 아닌 추상화된 타이어 인터페이스에만 의존하게 함으로써 스노우타이어에서 일반타이어로, 또는 다른 구체적인 타이어로 변경돼도 자동차는 이제 그 영향을 받지 않는 형태로 구성된다. 

자동차는 자신보다 변하기 쉬운 스노우타이어에 의존하던 관계를 중간에 추상화된 타이어 인터페이스를 추가해 두고 의존 관계를 역전시키고 있다. 

 

이처럼 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 하는 것의존 역전 원칙이다.

 

상위 클래스일수록, 인터페이스일수록, 추상 클래스일수록 변하지 않을 가능성이 높기에 하위 클래스나 구체 클래스가 아닌 상위클래스, 인터페이스, 추상 클래스를 통해 의존하라는 것이 바로 의존 역전 원칙이다.

 

 

 

 

- 참고

 스프링 입문을 위한 자바객체지향의 원리와 이해(김종민 저)

반응형

공유

댓글