11장 DIP: 의존성 역전 원칙

들어가며

 

의존성 역전 원칙에서 말하는, 유연성이 극대화된 시스템이란 소스코드 의존성이 추상에 의존하며 구체에는 의존하지 않는 시스템이다.

그렇다고해서 String과 같은 구체클래스를 추상클래스로 만들려는 것은 현실성이없다.

 

즉, DIP를 논할 때 운영체제나 플랫폼 같이 안정성이 보장된 환경에 대해서는 무시하는 편이다.

 

그래서 우리는 자주 변경될 수밖에 없는 변동성이 큰 구체적인요소 또는 모듈을 의존하지 않도록 해야한다.

인터페이스는 구현체보다 변동성이 낮기 때문에 구현체에 의존하는 일은 지양하고 대신 안정된 추상 인터페이스를 선호한다면 안정된 소프트웨어 아키텍처라 할 수 있다.

 

 

 

다음과 같은 코딩 실천법으로 DIP원칙을 설명할 수도있다.

 

DIP 원칙

 

1. 변동성이 큰 구체 클래스를 참조하지 마라.

(추상인터페이스, 추상팩토리를 사용한다.)

 

2. 변동성이 큰 구체 클래스로부터 파생하지 마라

(정적타입 언어에서 상속은 소스코드에 존재하는 모든관계 중에서 가장 강력한 동시에 뻣뻣해서 변경하기 어렵다.)

 

3. 구체 함수를 오버라이드 하지 마라.

(대체로 구체함수는 소스코드의존성을 필요로하는데 구체함수를 오버라이드하면 의존성을 제거할 수 없으며 그 의존성 또한 상속하게 되버린다.)

'📚 Book > Clean Architecture' 카테고리의 다른 글

14장 컴포넌트 결합  (0) 2020.02.22
13장 컴포넌트 응집도  (0) 2020.02.19
10장 ISP: 인터페이스 분리 원칙  (0) 2020.02.19
8장 OCP: 개방-폐쇄 원칙  (0) 2020.02.19
7장 SRP: 단일책임 원칙  (0) 2020.02.17