Как лучше организовать архитектуру кода для работы с Room и Курсорами Android?

В задании нужно реализовать работу с БД через Room и Курсоры. Реализации должны переключаться в runtime. Я реализовал CRUD операции через Room. Осталось придумать как переключать реализацию на курсоры. Есть следующие мысли: сделать две имплементации Dao для Room и Курсоров и в Репозитории используя делегат возвращать реализации для Room либо Курсоров читая preference. 2й вопрос: У меня есть dao интерфейс с аннотациями для Room , могу ли я этот интерфейс использовать для курсора?


Ответы (1 шт):

Автор решения: Dmitry Kucherenko

В общем сделал в Repository поле CarDao так:

private var carDao:CarDao=database.carDao()
      get(){
            val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
            val dataSource = sharedPreferences.getBoolean("switch",true)
             return if(dataSource) database.carDao() else
                 CarDatabaseCursor(context)
        }

→ Ссылка