의존관계 주입(Dependency Injection) 쉽게 이해하기 (techcourse.co.kr)

객체가 의존하는 또 다른 객체를 외부에서 선언하고 이를 주입받아 사용하는 것.

의존관계를 인터페이스로 추상화한다.

그 의존관계를 외부에서 결정하고 주입.

  1. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지않는다. 그러기 위해서는 인터페이스만 의존하고 있어야 한다.
  2. 런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제 3의 존재가 결정한다.
  3. 의존관계는 사용할 오브젝트에 대한 래퍼런스를 외부에서 제공(주입)해줌으로써 만들어진다.

장점

  1. 의존성이 줄어든다
  2. 재사용성이 높은 코드가 된다
  3. 테스트하기 좋은 코드가 된다
  4. 가독성이 높아진다