강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

jminie4598 のプロフィール画像
jminie4598

投稿した質問数

冷凍コーダーのわかりやすいModern Android Development入門

依存性の注入 基礎

ViewModel이 RepositoryImpl이 아니라 Repository를 생성자로 가지고 있는 것에 대한 질문

作成

·

790

0

제목 그대로 ViewModel이 RepositoryImpl(구현체)이 아니라 Repository(인터페이스)를 생성자로 가지고 있는 것은 SOLID 원칙 중 어느 원칙을 준수하기 위함인지가 궁금합니다.

jetpackarchitecturekotlinandroid

回答 3

0

frozencoder님의 프로필 이미지
frozencoder
インストラクター

이렇게 구현하면 리포지토리 구현체를 다른 것으로 갈아끼우기가 편해지니까 굳이 따지자면 개방폐쇄원칙을 지킨 것이 되겠네요. 이렇게 작은 앱에서는 딱히 그래야 할 필요는 없지만요 :)

0

jminie님의 프로필 이미지
jminie
質問者

오 네 Repository와 RepositoryImpl을 연결하는 과정에서 Hilt의 동작방식은 알겠습니다!

그런데 제가 궁금한 것은 Hilt에 대한 부분이 아니라 ViweModel에서 생성자로 RepositoryImpl(구현체 클래스) Repository(인터페이스)를 가지는 것이 SOLID에서 무슨 원칙을 준수하기 위함인지가 궁금합니다! :)

0

frozencoder님의 프로필 이미지
frozencoder
インストラクター

di 패키지의 RepositoryModule을 보시면 힐트가 주입할 리포지토리 인스턴스는 다음과 같이 정의됩니다.

    @Singleton
    @Binds
    abstract fun bindBookSearchRepository(
        bookSearchRepositoryImpl: BookSearchRepositoryImpl,
    ): BookSearchRepository

인터페이스 형식을 주입하기 위해 @Binds를 사용하긴 하지만, 실제로는 인터페이스의 구현체인 BookSearchRepositoryImpl이 주입되는 것입니다. Hilt 동작방식이 좀 헷갈리게 되어있죠.

jminie4598 のプロフィール画像
jminie4598

投稿した質問数

質問する