Это модель анемичной области?
-
28-10-2019 - |
Вопрос
Я пытаюсь построить свое первое приложение CRUD, и я не понимаю, следует ли мне использовать объект, содержащий отделенные геттеры и сети.
Учитывая, что у нас есть Zend Framework Quick START TURAND С структурой модели, содержащей:
- Ворота
- DataMapper
- Объект домена (класс модели)
Если объект домена (как представлен в учебном пособии Zend Quick Start) состоит из только Getters и Setters, это анти-паттерн? В некотором смысле, мы неоправданно делят объект домена с помощью сценария транзакций?
Пожалуйста, порекомендуйте.
Решение
Объекты домена отделены от бизнес -логики программного обеспечения. Это важная идея Процедурное программирование.
Однако эта модель считается кандидатом на анти-паттерн некоторыми разработчиками, что означает, что это может быть неэффективной практикой.
На самом деле вы могли бы рассмотреть недостатки
- Ваша модель менее выразительна, Getters и Setters не очень хороши для описания модели
- Код труднее повторно использовать, вы получаете дублированный код среди своих транзакционных сценариев
- Вы должны использовать обертки, которые скрывают фактическую структуру данных (так что, возможно, не ООП)
- Всегда есть глобальный доступ к субъектам
Я думаю, что наиболее интересным моментом является то, что объекты доменной модели не могут обеспечить их правильность в любое время. Потому что их мутация происходит в разделенных слоях.
Я тоже работал над приложением CRUD с Zend Framework. Четкое разделение между логикой и данными действительно великолепно, но когда вы прогрессируете, вы понимаете, что количество слоев и карточек становится больше и больше. Попробуйте повторно использовать свой код как можно больше, и избежать дублирования.
Другие советы
Модель анемичной домены-это антипатерн, только если вы пытаетесь построить истинную модель домена (известная как доменная модель из дизайна, управляемой доменом), и в конечном итоге сталкивается с объектами с только состоянием и без поведения.
Для простого приложения CRUD модель анемичной домены, вероятно, является наилучшей практикой, особенно если у вас есть структура, которая облегчает вашу работу.
Смотрите статью Мартина Фаулера о Анемическая доменная модель а также Статья Грега Янга.