반응형

Android DI 2

[Android] Hilt @Binds와 @Provides 차이점. (abstract and object)

@Binds @Provides @Binds를 사용할 때 abstract으로 선언하는 이유 예상 @Provides를 사용할 때 object로 선언하는 이유 예상 @Binds constructor를 가질 수 없는 interface의 인스턴스를 제공해야 할 때 사용할 구현을 Hilt에 알려준다. 함수 반환 유형은 함수가 어떤 인터페이스의 인스턴스를 제공하는지 Hilt에 알려준다. 함수 매개변수는 제공할 구현을 Hilt에 알려준다. @Binds를 사용하기 위해서는 module을 abstract class로 bind 함수를 abstract function으로 만들어야 한다는 것에 주의하자. 또한, @Provides와 비교하여 @Binds로 생성된 Hilt 자동 생성 클래스 개수가 더 적다. 구현체에 반드시 @In..

[Android] 종속 항목 삽입(Dependency Injection)이란?

Introduce 종속 항목 삽입을 구현하면 다음과 같은 이점을 누릴 수 있다. 코드 재사용 가능 리팩터링 편의성 테스트 편의성 종속성 항목 삽입이란? 클래스에는 흔히 다른 클래스 참조가 필요하다. 예를 들어 Car 클래스는 Engine 클래스 참조가 필요할 수 있다. 이처럼 필요한 클래스를 종속 항목이라고 하며, 이 예에서 Car 클래스가 실행되기 위해서는 Engine 클래스의 인스턴스가 있어야 한다. 클래스가 필요한 객체를 얻는 세 가지 방법은 다음과 같다. 클래스가 필요한 종속 항목을 구성한다. 위의 예에서 Car는 자체 Engine인스턴스를 생성하여 초기화한다. 다른 곳에서 객체를 가져온다. Context Getter 및 getSystemService()와 같은 일부 Android API는 이러한..

Foundation/Android 2022.11.19