Задать вопрос
@D-Andreevich

Для чего использование Hydrator pattern вместо создания объекта?

В некоторых проектах встречаю ситуацию, для того чтоб преобразовать массив данных в конкретный экземпляр класса используется такой паттерн как Hydrator. Для меня не понятно почему именно использование такого подхода, ведь ничего не мешает просто создать объект передав в конструктор данные массива?
Например вот https://github.com/jaddek/fireblocks-sdk-php/blob/...
  • Вопрос задан
  • 1124 просмотра
Подписаться 3 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@MarkusD
все время мелю чепуху :)
Гидрация, или насыщение, как термин используется для обозначения процесса наполнения данными уже доступной пользователю сущности. Когда сущность уже создана и доступна для использования, но данными заполнена не до конца или еще вовсе не заполнена.
Как правило, гидрация производится полностью в обход интерфейса сущности, предполагая изначальное соответствие неполной сущности инварианту своего типа. Этот процесс может напоминать сериализацию, но отличается от нее своей протяженностью во времени. В то время как сериализация предоставляет только полностью заполненную данными сущность, гидрация производится уже во время использования сущности пользователем.

Изначально гидратор являлся маркетинговым шаблоном в дизайне Hibernate ORM. Маркетинговым - это потому что нового ничего шаблон не вносит, просто имеющееся называет броским новым термином ради привлечения внимания. Шаблон дизайна - это потому что гидратор явно в коде не представлен, будучи именно высокоуровневым описанием поведения некоторого кода.
И самое интересное в том, что маркетинговая задумка удалась, хоть и немного в другом смысле. Люди начали понимать гидратор по-своему. В результате часто получается так, что гидратором называются обычные билдер или фабрика, а то и вовсе сериализатор. Термин людям понравился, просто.

Декоратор для гидратора из приведенного по ссылке кода - это просто еще одна попытка использовать любимый термин. Гидратор в этом коде гидратором не является по всем своим признакам. Это - сериализатор.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы