본문 바로가기
IT/Teckweek

DI (Dependency Injection)란?

by YEON-DU 2020. 12. 21.
반응형

 

출처 : Dependency Injection in Android

 

 

DI는 의존성 주입을 의미한다.

여기에서 의존성과, 주입에 대해 각각에 대한 의미를 알아보자.

 

위의 사진에서 ClassA에 대해 ServiceA와 ServiceB는 모두 의존성을 갖고 있다.

(각각의 서비스에서 ClassA를 사용한다)

따라서 이러한 상황에서 오른쪽의 경우 ClassA를 따로 생성하여 외부에서 ServiceA와 ServiceB에 주입하는 모습을 볼 수 있다.

 

 

DI (Dependency Injection)란?


어떠한 객체 A내에 선언된 B를 할당하게 되면 A는 B에 의존성을 갖게 된다. 이러한 상황에서 DI를 사용하게 되면 외부에서 생성한 B객체를 A에 주입하기만 하면 되고, B 객체 할당도 여러번 일어나지 않는다.

따라서 DI를 사용하게 되면 재사용성이 높아지고, Unit 테스트에 좋아진다.

무엇보다 구성 요소의 종속성이 감소하기 때문에 결합도가 낮아진다.

 

의존성 주입의 장점

1. 재사용성을 높여준다.

2. Unit 테스트에 용이해진다.

3. 코드를 단순화시키고, 가독성이 좋게 만들어준다.

4. 종속적이던 코드의 수를 줄여준다.

5. 결합도는 낮추면서 유연성과 확장성은 향상시킬 수 있다.

 

의존성 주입의 단점

1. 코드를 이해하기 더 어려워질 수 있다.

2. 배우는 데에 시간이 걸린다.

 

Koin이란?


koin은 Android에서 주로 사용하는 경량화된 의존성 주입용 프레임워크이다. 이외에는 Dagger와 같은 프레임워크가 있는데, 러닝커브가 상대적으로 높다.

반응형

'IT > Teckweek' 카테고리의 다른 글

코드 컨벤션  (0) 2021.01.15
해시 충돌  (0) 2020.12.27
안드로이드 클린 아키텍처  (0) 2020.12.18
TDD란?  (0) 2020.12.09
머신러닝과 딥러닝의 차이  (0) 2020.11.30

댓글