ㄴ참조 ) https://medium.com/@lazysoul/dependency-injection%EC%9D%B4%EB%9E%80-7ff65bdf624
객체 간의 의존관계를 객체-객체 (tight coupling)가 아닌 외부에서 객체를 생성하고 전달해 줌(loose coupling)으로 써 객체 간의 의존성 제거 및 결합도를 낮추는 것
장점
1. 모듈간의 의존성이 낮아져 유지보수에 좋다.
2. 모듈간의 의존성이 낮아져 코드 재사용이 좋다. ( 기능별로 분리를 잘 한경우 )
3. 테스트 하기 좋다.
Android context의 영향을 많이 받는 플랫폼이라고 할 수 있다.
Activity LifeCycle에 따라 자원을 생성하고 사용할 수 있다. 즉 Activity, Fragment 내에서 선언된고 사용되는 Instance들은 Activity, Fragment에 영향을 받는다는 소리
Instance가 내부의 영향을 받는다면, 같은 Instance 라도 다른 환경에서 다르게 동작 할 수 있다.
하지만 항상 같은 환경에서 Instance를 생성, Activity, Fragment 에서는 생성된 Instance를 받아서 사용만 한다면 내부 환경과 상관없이 같은 동작을 하며, 범용적으로 재사용 할 수 있다.
DI ( Dependency Injection )
Component는 Activity A와 Activity B에게 각각 필요한 Instance를 선언한다.
Component는 요청한 Instance들을 Injection 해준다.
내부에서 Instance 를 생성하지 않고 Component를 통해 필요한 Instance를 주입받는다.
-> 의존성이 느슨해짐
study - https://developer.android.com/training/dependency-injection/dagger-basics