Использование Doctrine с предметно-ориентированным дизайном

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

Вопрос

Я подумываю о реализации подхода к проектированию, управляемому предметной областью (аналогично описанному здесь), но хотите интегрировать его с Doctrine ORM.Кто-нибудь добился успеха, делая что-то подобное?

Моим первоначальным инстинктом было использовать Doctrine в качестве слоя DAO, но для Doctrine кажется немного запутанным сопоставление полей моей базы данных, а объекты моей сущности сопоставляются (по сути) с одним и тем же набором полей объекта Doctrine.

Моей первоначальной целью было отделить всю мою логику DQL/запросов от сущностей моего домена, но теперь я чувствую себя немного потерянным в мире шаблонов проектирования.

Я знаю, что Doctrine 2 должна обеспечить гораздо более дружественный подход к методам DDD, но я не уверен, что хочу ждать так долго.Имеет ли то, что я хочу сделать, смысл, или мне следует найти другой подход?

Спасибо.

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

Решение

Доктрина, на мой взгляд, несовершенна для DDD из-за отсутствия Репозиторий сорт.Doctrine поддерживает такие шаблоны, как Table Data Gateway и Active Record, которые, хотя и хороши для решения определенных задач, не обязательно являются лучшим выбором для «классического» DDD.Однако вы можете обойти эти недостатки.

Один из вариантов — получить производную от Doctrine_Table и использовать ее как репозиторий для бедняков.Например, если у вас есть класс BlogPost, у вас может быть класс таблицы BlogPostTable, унаследованный от Doctrine_Table.Затем вы можете добавить такие методы, как findByCategory, в класс BlogPostTable, сохраняя такую ​​логику отдельно от объектов вашего домена (которые наследуются от Doctrine_Record).Это не совсем то же самое, что шаблоны, предлагаемые «чистым» DDD, но достаточно близко.

Даже без одинаковых шаблонов проектирования вы все равно можете использовать основные идеи DDD.Основным из них является Ubiquitous Language, концепция попытки описать вашу предметную область, используя точный язык, понятный как экспертам в предметной области, так и разработчикам.

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