Я пытаюсь создать приложение для Android, используя шаблон проектирования MVVM. В настоящее время я создал 3 типа Dao (Dao1, Dao2, Dao3) для 3 различных типов PostTypes, используя Realm в качестве базы данных. Мои 3 Daos выглядят одинаково, но содержат Object с некоторыми идентичными переменными, но также и с множеством разных.
class Dao1(db: Realm) : Dao<PostType1>(db) {
fun findAllAsync(): LiveData<RealmResults< PostType1 >> {
return RealmResultsLiveData(where().findAllAsync())
}
fun findById(id: Int): LiveData< PostType1 >? {
return RealmLiveData(where().equalTo("id", id).findFirst())
}
private fun where(): RealmQuery<CTDCastaway> {
return db.where(PostType1::class.java)
}
}
Я пытаюсь выяснить, должен ли я создавать репозиторий для каждого Дао или 1, чтобы управлять ими всеми.
class PostRepositary private constructor(val postsDao1: Dao1?){
fun getDao1Posts() = postsDao1?.findAllAsync()
fun getDao1PostById(entityId: Int) = postsDao1?.getById(entityId)
companion object{
@Volatile private var instance:PostRepositary? = null
fun getWildlifeInstance(postsDao1: Dao1) =
instance ?: synchronized(this){
instance ?: PostRepositary(postsDao1).also {
instance = it
}
}
}
}
Так я должен создать 1 репозиторий для каждого из моих типов постов или 1 репозиторий для всех 3 типов постов, учитывая, что они имеют некоторые общие свойства?
И как мне создать единый репозиторий для нескольких Daos?
Будем благодарны за любые ссылки на документацию, связанную с этим.