[디자인패턴] SOLID | DIP (Dependency Inversion Principal), 의존성 역전 원칙

no-brand·2022년 1월 11일
0

DIP, 의존성 역전 원칙

  1. 목적 : 유연셩이 극대화된 시스템
  2. 설명 : 의존성이 구현 (implementation) 에 의존하지 않고, 추상 (abstraction, interface) 에 의존하는 형태

DIP 의 아이디어 자체만 보면 비현실적 입니다.
대부분의 언어가 concrete object 를 생성하기 위해서는 직접적인 의존성이 필요하기 때문입니다.
여기서, 의존하지 않는 대상을 <변동성이 큰 구체적인 요소> 로 보는게 맞습니다.

(예) 기본타입 (String), 운영체제, 플랫폼 등은 안정성이 보장된 항목이니 의존을 허용합니다.

팩토리 예제

변동성이 큰 구체 객체를 생성할 때 주의해야 합니다. 객체를 생성하려면 기 정의된 구체 클래스에 대해서 소스코드 의존성이 발생하기 때문입니다.
하단의 Abstract Factory 패턴의 경우, 생성을 위한 인터페이스를 두면서 소스코드의 의존성이 모두 한 방향을 (추상적인 쪽으로) 향하도록 만들 수 있습니다.
구체 컴포넌트에 DIP 를 위반하는 구간이 있지만, 모두 없을 수는 없는 필수적인 요소로 볼 수 있습니다. 단, DIP 를 위반하는 클래스를 하나의 구체 컴포넌트에 모아둘 수 있어서 나쁘지 않은 선택입니다.

0개의 댓글