본문 바로가기
면접,CS

[면접,CS] 의존성주입(DI)

by Cafe Mocha 2023. 1. 5.

DI?

DI는 Dependency Injection의 줄임말로 의존관계 주입이라고 한다.

 

 

Dependenct 의존관계란?

“A가 B를 의존한다” 라는 표현은 B가 변하면 A에 영향을 미친다는 의미이다.

예를 들자면 피자가게에서 피자를 만드는 레시피가 있다.

요리사는 피자 레시피에 의존한다. 라고 할때 레시피가 변경되면 요리사는 만드는 방법을 바꿔야하기 때문에 요리사는 레시피에 의존한다 라고 할수 있다.

 

 

의존성 주입이란?

의존성 주입은 의존관계를 외부에서 결정하고 주입하는 것이 DI(의존성 주입)이다.

이러한 외부모듈을 의존성 주입자(dependency injector)라고 한다.

위 예시를 통해 설명하자면, 요리사가 직접 피자 레시피를 고르는 것이 아니라 가게의 사장님이 레시피를 정해서 요리사에게 주는 것이다.

 

 

장점

  • 모듈을 쉽게 교체할 수 있는 구조(의존성이 줄어든다)가 되어 테스팅하기 쉽고, 마이그레이션하기 수월하다.
  • 재사용성이 높은 코드가 된다.
  • 가독성이 좋아진다.

단점

  • 클래스 수가 늘어나 복잡성이 증가될 수 있다.
  • 런타임 페널티가 생길 수 있다.