용어정리-[#SOLID] 6.DIP

2018. 6. 1. 00:49용어정리/#SOLID

[ DIP ]

의존 역전 원칙, Dependency Inversion Principle


2018 - 06 - 01


"고차원 모듈은 저차원 모듈에 의존하면 안 된다.

이 두 모듈 모두 다른 추상화된 것에 의존해야 한다."


"추상화된 것은 구체적인 것에 의존하면 안 된다.

구체적인 것이 추상화된 것에 의존해야 한다."


"자주 변경되는 구체(Concreate) 클래스에 의존하지 마라"


-로버트 C. 마틴


자동차와 스노우타이어 사이에는 다음과 같은 의존 관계가 있다.


자동타가 스노우타이어에 의존한다.

자동차는 한번 사면 몇 년은 타야 하는데

스노우타이어는 계절이 바뀌면 일반 타이어로 교체해야 한다.


이런 경우 스노우타이어를 일반 타이어로 교체할 때

자동차는 그 영향에 노출돼 있음을 알 수 있다.


영향을 개선해보자





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


그런데 이 설명에서 기시감을 느낄 것이다. 

바로 OCP(개방 폐쇄 원칙) 을 설명할 때 나온 설명이었다.

이렇듯 하나의 해결책을 찾으면 그 안에 여러 설계 원칙이 녹아있는 경우가 많다.


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


출처

스프링 입문을 위한 자바 객체 지향의 원리와 이해


'용어정리 > #SOLID' 카테고리의 다른 글

용어정리-[#SOLID] 5.ISP  (0) 2018.06.01
용어정리-[#SOLID] 4.LSP  (0) 2018.05.31
용어정리-[#SOLID] 3.OCP  (0) 2018.05.31
용어정리-[#SOLID] 2.SRP  (0) 2018.05.29
용어정리-[#SOLID] 1.SOLID  (0) 2018.05.29