의존관계 역전의 법칙 (Dependency Inversion Principle, DIP)
Source
Evernote/Technote scraps/객체지향 SW 설계의 원칙 ④ 리스코프 치환 원칙 - 지디넷코리아.md
Summary
이 문서는 객체지향 설계 원칙 중 ‘의존관계 역전의 법칙(DIP)‘을 설명한다. DIP는 ‘헐리우드 원칙(Don’t call us, we’ll call you)‘에 기반하며, 고수준 모듈이 저수준 모듈에 의존하지 않고 둘 다 추상화에 의존하도록 하는 것을 핵심으로 한다. 이를 통해 ‘통제권의 역전(Inversion of Control, IOC)‘이 발생하며, 프레임워크나 서비스 제공자가 미리 정의된 인터페이스(훅 메소드)를 통해 호출자에게 결과를 알려주는 구조를 형성한다. DIP는 확장성을 위해 OCP(개방-폐쇄 원칙)와 함께 사용되며, 비동기 통신 모델(예: 소켓 프로그래밍에서의 콜백/훅 메소드 등록)과 같은 사례에서 그 유용성을 보여준다.
Key Points
- DIP는 헐리우드 원칙을 따르며, 능동/수동 관계의 역전을 통해 의존성을 관리한다.
- 통제권의 역전(IOC)은 호출자에서 프레임워크(서비스 제공자)로 제어 흐름이 넘어가는 것을 의미한다.
- 훅(Hook) 메소드는 역전을 위한 매개 포인트이자 확장성을 제공하는 인터페이스 역할을 한다.
- DIP는 추상화를 통해 사용자 정의 컴포넌트에 대한 의존성을 제거하고 확장성을 보장한다.
- OCP와 DIP는 상호 보완적이며, DIP는 훅 메소드 정의를 위해 OCP를 활용한다.
- 비동기 소켓 모델 등에서 DIP 적용 시, 블로킹 대신 훅 메소드 등록을 통해 자원 효율성을 높일 수 있다.