
객체 간의 의존성을 떨어트릴수 있음
코드의 재활용 용이
Unit Test 진행 수월
class Sample {
val book = Book()
fun readBook() {
book.read()
}
}
vs
class Sample(book: Book) {
fun readBook() {
book.read()
}
}
@HiltAndroidApp
class BookApplication: Application()
@AndroidEntryPoint
class MainActivity : AppCompatActivity()
@AndroidEntryPoint
class MainFragment : Fragment(layoutId)
@HiltViewModel
class MainViewModel
class MainViewModel @Inject constructor()
@InstallIn(SingletonComponent::class)
@Module
object RepositoryModule
@Singleton
@Binds
abstract fun bindBookRepository(bookRepositoryImpl: BookRepositoryImpl): BookRepository
@Provides
@Singleton
fun provideBookRepository(api: BookApi): BookRepository {
return BookRepositoryImpl(api)
@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class ResponseInterceptor