개발_프로그래밍

클린 아키텍처 - 11장. DIP: 의존성 역전 원칙 Dependency Inversion Principle

_랄프_ 2022. 9. 17. 07:15
728x90

11장 DIP: 의존성 역전 원칙 Dependency Inversion Principle

유연성이 극대화된 시스템 = 소스코드 의존성이 추상 abstraction 에 의존하며 구체 concretion 에는 의존하지 않는 시스템이다. 의존을 피해야 하는 것은 변동성이 큰 volatile 구체적인 요소이다. 이 구체적인 요소는 한창 개발중이라 자주 변경될 수밖에 없는 모듈이라고 할 수 있다.

쉽게 말해 구체인 class가 추상인 interface를 참조하는 모습을 생각하면 된다.

 

728x90

 

 

- 변동성이 큰 구체 클래스를 (직접)참조하지 말 것. 대신 추상 팩토리 Abstract Factory 를 사용한다.

- 변동성이 큰 구체 클래스로부터 파생(상속)하지 말 것.

- 구체 함수를 오버라이드 override 하지 말 것. 구체 함수를 오버라이드 하면 의존성을 제거할 수가 없다. (의존성도 상속받는다) 대신 추상 함수로 선언하고 구현체들에서 각자 용도에 맞게 구현해야 한다.

아래 그림은 의존성을 관리하기 위해 추상 팩토리 패턴을 사용한 예이다. 여기서 경계는 구체적인 것들로부터 추상적인 것들을 분리한다. 추상은 업무규칙, 구체는 업무규칙을 다루기 위한 세부사항이다.

 

제어흐름은 소스코드 의존성과는 반대방향으로 곡선을 가로지르므로 이러한 것을 의존성 역전 Dependency Inversion 이라고 한다.

의존성(화살표 방향)은 경계를 기준으로 더 추상적인 쪽으로만 향해야 한다.

<12장에서 계속>

 

 

728x90
반응형