Я перестраиваю веб-сайт, на котором я работаю, и который предоставляет таблицы приливов.Я делаю это с Zend Framework и пытаюсь сделать его максимально ориентированным на объект.Я думал о потоке / процессе, который будет происходить, когда посетитель запрашивает таблицу приливов из местоположения, и о том, как он возвращается.
Я придумал 2 разных «типа» объектов для использования, которые помогутв этом процессе.Первый - это в основном объект helper , который использует Zend Framework.Второй - объект data (из-за отсутствия лучшего слова) для инкапсуляции данных, которые передаются между помощниками.Вот примерное представление о потоке, о котором я думаю:
- RequestHandler
- Получает массив для запроса от контроллера сайта или от контроллера API.
- Создает «объект данных» с именем QueryData и заполняет его всей информацией о запросе.
- Передает QueryData объект в LocationHandler .
- Возвращает объект ResponseData , который был возвращен ему из LocationHandler .
- LocationHandler
- Получает QueryData объект от RequestHandler
- Работает ли поиск местоположения и создает LocationData объект для хранения его в.
- Передает QueryData и LocationData объекты различным помощникам, таким как TideHandler или WeatherHandler , которые возвращают конкретные данные для исходныхquery.
- Возвращает массив ResponseData объекты, которые содержат ответы, возвращаемые ему от каждого из конкретных помощников (TideHandler, WeatherHandler и т. д.)
- TideHandler
- Получает QueryData и LocationData объекты от LocationHandler .
- Работает ли использование объектов данных для поиска данных приливов.Создает объект ResponseData для его сохранения.
- Возвращает ResponseData в LocationHandler .
Делая все так, я получаю ООП "подключи и играй", который позволяет мне добавить к этому гораздо проще (я думаю?).Извините за длинное объяснение, приведшее к моему вопросу ...
Вопрос:
Является ли обычной практикой инкапсуляция наборов данных в объект (а не вмассив) для передачи другим объектам, которые выполняют над ним функции и отправляют новые / измененные объекты?Какие существуют другие решения или шаблоны, обеспечивающие аналогичный уровень функциональности и гибкости?