Android Project에서 화면의 데이터를 관리하는 구성요소는 ViewModel이지만, 각종 Data Source로부터 해당 ViewModel에 데이터를 공급할 때는 Repository 패턴을 활용한다.
기본적으로 프로젝트 폴더 내에 data
라는 Package 경로를 생성하여 활용한다. 해당 포스트에서는 Room Database로부터 데이터를 공급받아 ViewModel로 제공하는 Repository 패턴을 구현하는 예시를 다루겠다.
UserRepository.kt
interface UserRepository {
fun insert(user: User)
fun delete()
}
UserRepositoyrImpl.kt
class UserRepositoryImpl(private val userDao: UserDao): UserRepository {
fun insert(user: User){
...
}
fun delete(){
...
}
}
AppModule.kt
...
single<UserRepository> { UserRepositoryImpl(get()) }
...
해당 예시와 같은 형태로 Repository 인스턴스를 생성하고 Koin을 활용하여 ViewModel에 주입할 수 있게 된다.