Анемичная Модель предметной области по сравнению с Моделью предметной области в простом домене управляемый дизайн

Консоль UI - установка Tig

:

apt-get install tig

Использование

, В то время как в мерзавце repo, введите 'tig', чтобы просмотреть интерактивный журнал, совершить нападки, 'входят' в любой журнал для наблюдения большей информации об этом. h для справки, которая перечисляет основную функциональность.

Мелочи

"Tig" является "Мерзавцем" назад.

16
задан larsmoa 19 November 2012 в 15:24
поделиться

3 ответа

Ключ вопрос состоит в том, чтобы спросить , почему модель предметной области анемична?

  • Практически полное отсутствие бизнес-логики, как в приложении, которое в основном представляет собой набор экранов CRUD ?
  • Сервис-ориентированный архитектура, в которой «объекты предметной области» на самом деле простые структуры объекты передачи данных ?
  • Политические или прагматические соображения, такие как право собственности на код или прямая / обратная совместимость, которые чрезмерно препятствуют рефакторингу?
  • Применение процедурного / реляционного дизайна на другом объектно-ориентированном языке?

В любом случае, если бы я выбрал простое практическое правило для границы между логикой модели предметной области и логикой обслуживания,может случиться так, что взаимодействие со связанными объектами в пределах домена нормально, тогда как доступ к «внешнему миру» (пользовательский интерфейс, веб-службы и т. д.), вероятно, не относится к модели предметной области.

9
ответ дан 30 November 2019 в 22:37
поделиться

Если домен легкий (читай: не сложный), рекомендуется использовать простые объекты типа ActiveRecord на уровне вашего основного домена. Обычно это взаимно однозначное сопоставление между таблицами БД и объектами вашего домена, и здесь не так уж много "логики". Ваше приложение просто перетасовывает записи между базой данных и вашим пользовательским интерфейсом и позволяет выполнять простые операции CRUD.

Для сложных доменов вы должны построить базовую модель домена, в которой некоторые объекты в конечном итоге отображаются в таблицы БД, а некоторые, вероятно, этого не делают, и представляют другие концепции в вашей области, помимо простых данных. Логика для приложения должна быть внутри объектов, когда это уместно, или внутри объектов службы, если это требует координации между несколькими объектами домена.

Анти-шаблон модели анемического домена применяется, когда у вас есть сложный домен, но вместо того, чтобы надлежащим образом поместить некоторую логику в объекты домена и некоторую логику в сервисы, вы помещаете ВСЕ (или почти всю) логику, внешнюю по отношению к вашему основному домену. объекты.

Ключевое отличие здесь в том, где вы помещаете логику. Если у вас их немного, очевидно, что объекты домена будут выглядеть не более чем как простые контейнеры данных. Если у вас действительно сложная логика, не просто извлекайте ее ВСЕ из объектов домена, а лучше разделите ее соответствующим образом между основными объектами домена и службами домена.

Если у вас их немного, очевидно, что объекты домена будут выглядеть не более чем как простые контейнеры данных. Если у вас действительно сложная логика, не просто извлекайте ее ВСЕ из объектов домена, а лучше разделите ее соответствующим образом между основными объектами домена и службами домена.

Если у вас их немного, очевидно, что объекты домена будут выглядеть не более чем как простые контейнеры данных. Если у вас действительно сложная логика, не просто извлекайте ее ВСЕ из объектов домена, а лучше разделите ее соответствующим образом между основными объектами домена и службами домена.

7
ответ дан 30 November 2019 в 22:37
поделиться

Доброго времени суток!

Если вы поместите логику за пределы объектов домена, вы полностью потеряете одну из основных концепций объектно-ориентированного программирования: инкапсуляцию (или скрытие данных).

AOP делает это в определенной степени, но в конце концов, исчезла одна из ключевых концепций объектной ориентации.

С уважением, Стефан

1
ответ дан 30 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

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