[Clean Architecture] 11장 DIP: 의존성 역전 원칙

soohee·2022년 5월 11일
0

클린아키텍처

목록 보기
10/15

의존성 역전 원칙이란, 의존성이 추상에 의존하고 구체적인 것에 의존하지 않아야 한다는 원칙이다.

이는, 100프로 지켜지기는 힘들다.

예를 들어, JAVA에서 string은 구체적인 클래스이나, 안정하기 때문에 추상클래스로 만들지 않는다.

따라서, 의존성을 피해야 하는 것은 변동성이 큰 구체적인 요소이다.

안정된 추상화

추상 인터페이스에 변경이 생기면, 그에 의존하는 구체적인 구현체들도 수정해야하기 때문에,

추상 인터페이스는 굉장히 안정적으로, 변동성이 낮게끔 만든다.

  • 변동성이 큰 구체 클래스를 참조하지 말라.
  • 변동성이 큰 구체 클래스로부터 파생하지 말라
  • 구체 함수를 오버라이드 하지말라.
  • 구체적이며 변동성이 크다면 절대로 그 이름을 언급하지 말라.

팩토리

규칙을 준수하려면, 변동성이 큰 객체는 주의해야한다.

사실상 모든 언어에서 객체를 생성하려면, 구체적인 코드에 대해 의존성이 발생하기 때문이다.

자바 같은 객체 지향언어에서는 이를 막기위해 추상 팩토리를 사용한다.

구체 컴포넌트

DIP 위배는 모두 없앨 수 없다.

따라서, 이를 위배하는 클래스들은 적은 수의 구체 컴포넌트 내부로 모을 수 있고, 나머지 부분과 분리할 수 있다.

결론

의존성은 아키텍처를 나누는 곡선을 기준으로, 더 추상적인 엔티티가 있는 쪽으로 향한다.

profile
🐻‍❄️

0개의 댓글