-
[Android] 의존성 주입(DI/Dependency Injection)Android/Android 2022. 9. 6. 19:47반응형
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다]
<의존성 주입이란?>
- 클래스간의 참조(Dependency)를 생성하는 방법은 크게 3가지로 구분됨(예제에서는 클래스 A와 B간의 의존성 생성하는 것으로 함/A가 B 참조)
- 구성요소간의 의존 관계가 코드 내부가 아닌 외부 파일을 통해 정의되게 하는 디자인 패턴
- 의존성 : 서비스로 사용할 수 있는 객체
- 주입 : 의존성(서비스)을 사용하려는 객체로 전달하는 것
- 방법 1. 클래스 A 안에서 클래스 B 생성
class A{ private val b = B() }
- 단점 : A와 B를 분리하여 테스트 하는 것이 어려움
- 방법 2. 다른 곳에 존재하는 객체 참조
class A{ private val b = context.B() }
- SingleTone으로 생성된 클래스를 참조하고 있으므로 클래스 B를 사용하지 않는 경우에도 메모리에 계속 남아 메모리 누수 발생 가능
- 방법 3. 클래스 B를 외부에서 생성한 후 A의 인자로 넘겨줌(의존성 주입)
class A(private val b: B){ }
- 즉, 외부에서 의존 객체를 만들어 넘겨주는 것
- b 값으로 다양한 값 전달 가능
- 테스트 더블(Test Double)이 가능해짐
<의존성(종속성) 주입 하는 이유>
1. Unit Test 쉬워짐
2. 코드 가독성, 재활용성 높임
3. 객체 간의 의존성 줄이거나 없앨 수 있음
4. 객체 간의 결합도 낮춰 유연하게 가능
5. 리팩토링 편의성
<자동으로 DI 가능하게 하는 라이브러리>
1. Koin
2. Dagger
3. Hilt 등등..
*참고한 글*
*새롭게 알게되는 내용 있으면 계속 추가 예정*
반응형'Android > Android' 카테고리의 다른 글
[Android] Handler/Looper 기초 (0) 2022.09.28 [Android] Privacy Policy로 플레이 스토어 앱 등록 개인 정보 처리 방침 만들기 (0) 2022.09.21 [Android] Fragment에서 binding null 처리 (2) 2022.08.31 [Android] Manifest uses-feature (0) 2022.08.29 [Android] Thread Safe (0) 2022.08.24