개발기초

객체 지향 설계 5원칙(SOLID) - 의존 역전 원칙 DIP [핵심간단]

Veams 2023. 2. 22.

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

- "의존 관계를 맺을 때, 변하기 쉬운(구체적인) 것보다는 변하기 어려운(추상적인) 것에 의존해야한다."

- “추상화에 의존해야지, 구체화에 의존하면 안된다.”

 

구체화된 클래스에 의존하기 보다는 추상 클래스나 인터페이스와 관계를 맺는 것을 의미한다.

간단히 말해서, 추상성에 의존하라는 원칙이다. 이를 통해 비즈니스와 관련된 부분이 세부 사항에는 의존하지 않고자 한다.

 

고수준 계층의 모듈(클래스)은 저수준 계층의 모듈(클래스)이 있다고 하자. 

- 고수준: 입력과 출력에 먼 추상화된, 비즈니스적인 부분을 다루는

- 저수준: 고수준 모듈에서 기능을 수행하기 위해 도와주는 역할로, 입력과 출력으로부터 가까운 HTTP, 데이터베이스, 캐시... 같은 것들

 

만약 추상화를 하지 않고 고수준 계층의 모듈이 저수준 계층의 모듈에 의존한다고 가정하자. 

저수준 계층의 코드는 수정 빈번하게 생길 수 있는데, 저수준에서의 사소한 변화로도 고수준 계층의 코드를 함께 변경해야할 것이다.이에 따라 소모되는 개발 코스트는 크게 증가할 것이다. 

 

이 때문에 저수준 모듈을 수정하더라도 고수준 모듈 코드를 수정하지 않도록 코드를 구성해야한다.

 

정리

 

첫째, 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다. 

둘째, 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.

 

 

참고

https://mangkyu.tistory.com/194

 

[OOP] 객체지향 프로그래밍의 5가지 설계 원칙, 실무 코드로 살펴보는 SOLID

이번에는 객체 지향 프로그래밍의 5가지 핵심 원칙인 SOLID에 대해 알아보고자 합니다. 실제로 애플리케이션을 개발할 때 어떻게 적용할 수 있을지 구체적인 예시를 들어 살펴보고자 합니다. 아

mangkyu.tistory.com

https://blog.hexabrain.net/395

 

SOLID. 의존관계 역전 원칙(Dependency inversion principle)

의존관계 역전 원칙 의존관계 역전 원칙은 객체 지향 설계의 다섯 가지 기본 원칙(SOLID) 중 하나(D)입니다. 이를 인터페이스 편의 설계적인 관점에 넣으려고 했으나 상당히 중요한 부분이기 때문

blog.hexabrain.net

 

댓글