воскресенье, 15 июня 2014 г.

Controller и кэширование

7 задание по курсу "Информатика и программирование" на весенний семестр 2013-2014 года

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

Контроллер

Данный класс должен быть ответственен за обработку запроса браузера. Что для этого требуется:
  • Класс контроллер должен иметь как минимум 1 публичный метод processRequest
  • В файле, к которому непосредственно идет обращение (зачастую index.php) создается экземпляр класса Controller и сразу вызывается метод processRequest
  • В этом методе проверяется наличие GET-параметров, в зависимости от значений которых происходит нужное действие.
  • Внутри контроллера должны создаваться сущности кэширующего провайдера (подробнее ниже).

GET-параметры

С запросом передается 1 параметр type. Возможные значения:
  1. Composition
  2. Inheritance
  3. Нет значения (или нет параметра)

Кэш-провайдер

Кэш провайдер выполняет одну единственную роль - кэширует данные, возвращаемые от относящегося к нему провайдера сущностей. Отношение может быть выражено двумя способами:
  1. Композиция. Когда в конструктор кэширующего провайдера передается экземпляр провайдера сущности.
  2. Наследование. Кэширующий провайдер расширяет класс провайдера сущности.
Любые данные из кэширующего провайдера сперва берутся из провайдера сущности, а, затем, кэшируется (если это целесообразно), либо напрямую берутся из кэша. Время жизни кэша - на ваше усмотрение.

Итог

Схема работы вашего задания такова: контроллер обрабатывает приходящий параметр и принимает решение:
  1. Если параметра нет или его значение отлично от заявленных двух (см. выше), то в качестве провайдера сущностей используется обычный класс провайдера сущностей.
  2. Если параметр Composition, то в качестве провайдера сущностей берем кэширующий провйдер с отношением "Композиция".
  3. Если параметр Inheritance, то в качестве провайдера сущностей берем кэширующий провайдер с отношением "Наследование".
Затем, в контроллере, происходит вызов всех трех методов полученного провайдера. Полученные данные агрегируются в массиве, а, затем, выводятся в шаблоне. Вывод - на ваше усмотрение. Главное, чтобы было видно, какие данные каким методом получены.

Примечание.

Кэширующий провайдер и провайдер сущности должны имплементировать 1 интерфейс (например, IEntityProvider), в котором будут объявлены 2 метода получения данных: getEntity и getEntities
Для сохранения в кэш используйте функцию serialize. Для восстановления данных - unserialize

Комментариев нет:

Отправить комментарий