클린아키텍쳐-인터페이스 분리 원칙

의존성 역전 원칙(DIP The Dependency Inversion Principle)

의존성이 추상에만 의존하며 구체에는 의존하지 않는 시스템

비현실적인 아이디어긴 하다. 자바 String은 구체 클래스이다. 이것을 추상클래스로 만들려는 시도는 없다
String은 매우 안정적이기 때문에 String 클래스가 변경되는일은 거의 없다.

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

우리가 의존하지 않도록 피하고자 하는 것은 바로 변동성이 큰 구체적인 요소이다.

안정된 추상화

인터페이스는 구현체보다 변동성이 낮다.

  • 변동성이 큰 구체 클래스를 참조하지 말라.(추상 팩토리를 사용하도록 강제)
  • 변동성이 큰 구체 클래스로 부터 파생하지 말라.
  • 구체 함수를 오버라이드 하지 말라.
  • 구체적이며 변동성이 크다면 절대로 그 이름을 언급하지 말라.

소스코드 의존성은 제어흐름과 반대 방향으로 역전된다. 이러한 이유로 의존성 역전이라 부른다.

참조