Почему DAO должен быть интерфейсом или абстрактным классом? - PullRequest
0 голосов
/ 26 августа 2018

Я хочу понять, что происходит за кулисами в RoomDatabase, что для этого требуется, чтобы DAO был либо интерфейсом, либо абстрактным классом.Я долго искал, но все статьи и документация объясняют только как, а не как.

Ответы [ 2 ]

0 голосов
/ 26 июля 2019

Объект доступа к данным, или Dao, представляет собой аннотированный класс, в котором вы задаете запросы SQL и связываете их с вызовами методов.

DAO должен быть интерфейсом или абстрактным классом, потому что мы хотим убедиться, чтоМетоды CRUD, которые мы будем создавать внутри него, реализованы на уровне класса.На самом деле вся идея иметь интерфейс или абстрактный класс.

0 голосов
/ 27 августа 2018

Это не просто Room , Retrofit , и другие библиотеки также используют этот шаблон, он называется Программирование на интерфейсе .Вместо того, чтобы просто создавать конкретную реализацию, вы просто указываете, что вы хотите сделать, и они предоставляют вам реализацию, которая будет вести себя так, как вы просили.

Для дальнейшего изучения вы можете проверить эту статью: https://tuhrig.de/programming-to-an-interface/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...