Если активность имеет прямой доступ к базе данных SQLite или должен быть класс посредника?

StackOverflow https://stackoverflow.com//questions/9674929

Вопрос

Я имел подклассный SQLiteopenheelper и иметь все компоненты кода, готовыми к использованию. Вопрос в том, это действительно хороший дизайн, чтобы позволить любую деятельность иметь прямой доступ к публичным методам в основной базе данных.

У меня есть ситуация, когда моя деятельность собирается заполнить информацию в его макетах на основе какой информации, которую она получает из базы данных - по сути, будучи динамически созданной во время выполнения. Поскольку у меня будет несколько строк, возвращающихся из базы данных, что означает, что у меня будет массив того, что мне нужно, чтобы получить всю информацию.

Так что-то вроде этого:

 //in Main Activity Class
 private class menuItems{

    String category_name;
    int category_id;
    int menuItem_id;
    String menu_title;
    String menu_desc;
    String price;
    int icon;
}

  //ArrayList in Main Activity
   ArrayList<menuItems> menu = new ArrayList<menuItems>();
.

Моя деятельность нуждается в этой «структуре» в качестве собственной - так что она может получить информацию из базы данных - что-то вроде GetallMenuitems (), - где этот метод выполнит оператор SELECT, собрать информацию о том, что информация является его собственной «структурой» и вернуть его обратно в основную деятельность. Затем используйте эту информацию в рамках деятельности для создания макетов / представлений и т. Д.

Если бы я должен был в конечном итоге иметь класс посредника, чтобы поговорить с базой данных, то этот класс также понадобится ту же «структуру», определенную в нем. Было ли это лучше дизайн, чтобы иметь что-то вроде:

МАКТИВНОСТЬ

databaseAccessor - звонки общедоступные классы данных databasehelper (за запрос от мэмпировки)

databasehelper (подклассы sqliteopenheelper, выполняет все запросы базы данных)

Я хотел бы спроектировать что-то вдоль линий MVC (контроллер по просмотру модели), но мне было интересно, что вы, ребята, думали о практичности этого в приложении Android.

Спасибо!

Это было полезно?

Решение

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

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

Другие советы

Чтобы заключить - думаю, что имение базы данных отдельно от GUI - это умный шаг в случае, если я хочу снова использовать класс БД с любым другим действием.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top