반응형
의존성 주입(Dependency Injection)이란 ?
하나의 객체에 다른 객체의 의존성을 제공하는 기술을 말한다, DI를 그대로 번역한 의존성 주입이란 단어를 사용하다 보니 이는 좀 어렵게 느껴질 수 있으나, 서로를 필요로 하는 관계라고 이해하면 조금 쉽다.
예를 들어 컴퓨터에 포함되는 CPU가 생성되는 단계부터 단단히 결합되어 있고, 다른 CPU로 변경하고 싶어도 그럴 수 없다. 이를 "Computer가 CPU에 의존성을 갖는다" 고 할 수 있다.
의존성 주입의 장단점 ?
장점
- 의존성 주입은 인터페이스를 기반으로 설계되며, 코드를 유연하게 한다.
- 주입하는 코드만 변경하기 쉬워 리팩토링이 수월
- 단위테스트가 쉬워 진다. ( 가장 큰 장점)
- 클래스간의 결합도를 낮춘다.
- 여러개발자가 협업한다고 했을때, 서로 사용하는 클래스를 독립적으로 개발 할 수 있다.
단점
- 간단한 프로그램에는 오히려 번거로운 작업이 될 수 있다. - 유지보수가 필요없는 경우 불필요
- 코드 추적이 어렵고 가독성을 떨어뜨릴 수 있다.
- 빌드에 시간이 더 소요됨
Dagger2란 무엇?
강력하고 빠른 의존성 주입 프레임워크이다. 리플렉션을 사용하지 않고 런타임에 바이트 코드를 생성하지 않는 것이 특징 (성능에 악영행을 주지않는다는 것). 하지만 Dagger는 가파른 학습곡선으로 포기각이 많음
Dagger2의 장점?
- 자원공유의 단순화. 지정된 범위의 생명주기내에서 동일 인스턴스를 제공한다.
- 복잡한 의존성을 단순하게 설정함. 애플리케이션이 커질 수 록 많은 의존성을 갖는데 Dagger는 이를 쉽게 제어해 준다.
- 유닛테스트도 쉽게 도와준다.
- 자동코드 생성. 생성된코드는 명확하고 디버깅이 가능하다.
- Dagger2는 난독화 문제가 없다,
- 라이브러리 크기가 작다
다음은 Dagger2를 실 사용하는 방법부터 정리할 계획
반응형
'Android' 카테고리의 다른 글
[Android] 스토어 등록 정책/ 그래픽 문구 등록 가이드 (0) | 2022.05.04 |
---|---|
[Android] 앱 리젝/삭제 사유 - 앱 이름, 아이콘 또는 개발자 이름 (0) | 2022.05.04 |
[Android]안드로이드 애플리케이션 설계패턴 (0) | 2021.03.28 |
아키텍처_애플리케이션의 설계 원칙 (0) | 2021.03.21 |
[Android] DataBinding 사용하기 (0) | 2021.01.12 |