들어가며
의존성 역전 원칙에서 말하는, 유연성이 극대화된 시스템이란 소스코드 의존성이 추상에 의존하며 구체에는 의존하지 않는 시스템이다.
그렇다고해서 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 |