Начнем обсуждение с интерфейса, который служит контрактом для модели виджета, чтобы эта модель могла объявлять поля для сохранения в базе данных. Этот контракт также определяет то, как устанавливать поле, когда оно извлекается из базы данных.
Вдобавок интерфейс предоставляет метод обратного вызова init, который вызывается при первоначальном извлечении модели из базы данных и перед передачей ее запросившему клиенту.
Интерфейс спроектирован таким образом, Начнем обсуждение с интерфейса, который служит контрактом для модели виджета, чтобы эта модель могла объявлять поля для сохранения в базе данных. Этот контракт также определяет то, как устанавливать поле, когда оно извлекается из базы данных. что производный абстрактный класс предоставит реализацию с использованием специфического постоянного хранилища, полагаясь на этот контракт для Java-класса уровня листа. Затем Java-класс уровня листа должен будет реализовать этот контракт для предоставления того, что необходимо сохранять и извлекать.
В качестве постоянного хранилища будет использоваться средство разделяемых настроек Android. Как следует из имени этого интерфейса, это просто контракт на сохранение данных. Клиенты вроде BDayWidgetModel просто полагаются на специфические методы класса, наиболее часто наследуемого от этого интерфейса.
Реализация этого интерфейса должна будет предоставить имя файла настроек в ответ на вызов метода getPrefname . Этот файл настроек затем применяется для сохранения пар “ключ/значение”, полученных от getPref sToSave . В обратной операции (setValueForPref) у производного класса запрашивается установка внутреннего значения по заданному ключу и значению, извлеченному из хранилища настроек.
Наконец, метод init вызывается на производном классе для отражения того факта, что значения были восстановлены из постоянного хранилища или произошла какая-то другая возможная инициализация.
На заметку! Помните, что в реальном приложении это наследование будет структурироваться несколько иначе; скорее всего, вместо наследования будет применяться механизм делегирования для повторного использования. Однако эта иерархия наследования хорошо работает в рассматриваемом тестовом случае для демонстрации моделей виджето.
Теперь давайте рассмотрим абстрактную реализацию, которая сохраняет поля данных виджета как разделяемые настройки.
Опубликовал Kest
February 14 2015 13:59:39 ·
0 Комментариев ·
2168 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.