의존성 주입이란?
- 싱글톤 패턴은 사용하기 쉽고 실용적이지만 모듈간의 결합을 강하게 만들 수 있다는 단점이 존재
- 의존성 주입(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 |