"의존 관계 역전의 원칙"
"클라이언트는 구현 클래스가 아닌 인터페이스나 추상 클래스에 의존해야 한다."

구현 클래스는 인터페이스보다 변하기 쉽다. 구현 클래스에 의존한 클라이언트는 구현 클래스의 변경에 따라 클라이언트 역시 변경이 요구될 수 있다.

"ArrayList list = new ArrayList();"
구현 클래스에서 많이 사용되고 있는 메서드의 리턴 타입이 바뀌었다면,
그 구현 클래스의 메서드를 사용하고 있는 많은 부분들은 리턴 타입에 맞게 수정을 해야한다.

"List list = new ArrayList();"
하지만, 인터페이스를 구현하게 되면, 구현 클래스를 직접 의존할 필요없이 인터페이스에 의존하여 구현 클래스의 변화에 따른 충격을 피할 수 있다.


이 원칙을 따른다면, 모든 클래스는 최소 하나의 인터페이스를 가져야 한다. 이는 오히려 시스템의 복잡도를 증가시킨다.
DIP는 변화나 확장이 예측되는 부분에 적용해야 한다.

+ Recent posts