본문 바로가기
Computer Science

Dependency Injection(의존성 주입)

by 곰제비 2022. 6. 21.

의존성 주입이란?

  • 싱글톤 패턴은 사용하기 쉽고 실용적이지만 모듈간의 결합을 강하게 만들 수 있다는 단점이 존재
  • 의존성 주입(DI, Dependency Injection)을 통해 모듈간의 결합을 조금 더 느슨하게 만들어 해결 가능
  • 의존성이란?
    • 종속성이라고도 하며 A가 B에 의존성이 있다는 것은 B의 변경 사항에 대해 A 또한 변해야 한다는 뜻

  • 메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주는 것이 아닌 중간에 의존성 주입자가 이 부분을 가로채 메인 모듈이 간접적으로 의존성을 주입하는 방식
  • 메인 모듈은 하위 모듈에 대한 의존성이 떨어지게 된다.
    • 서비스를 사용하려는 수신객체(클라이언트)가 해당 서비스의 구성방법을 알 필요가 없게 하는 것 
    • 디커플링된다 라고도 표현함.
  • 컴파일타임이 아닌 런 타임에 종속성을 해결하는데 사용
  • 프레임워크가 아니라 디자인 패턴으로 IoC(Inversion of Control)라고 하는 보다 소프트웨어 개념을 구현하는 방법 중 하나
    • 무언가 쉽게 교체 가능하도록
  • 장점
    • 모듈을 쉽게 교체할 수 있는 구조가 되어 테스팅하기 쉽고 마이그레이션하기도 쉽다.
    • 구현할 때 추상화 레이어를 넣고 이를 기반으로 구현체를 넣어 애플리케이션 의존성 방향이 일관된다.
    • 애플리케이션을 쉽게 추론할 수 있고 모듈 간의 관계가 조금 더 명확해진다.
  • 단점
    • 모듈들이 더욱 분리되어 클래스 수가 늘어나 복잡성이 증가할 수 있다.
    • 약간의 런타임 페널티가 생기기도 한다.

'Computer Science' 카테고리의 다른 글

Iterator Pattern(이터레이터 패턴)  (0) 2022.07.01
Singleton Pattern(싱글톤 패턴)  (0) 2022.06.18
Framwork? library?  (0) 2022.06.17