Всякий раз, когда я читаю статью о современном шаблоне проектирования, например MVVM или DDD, мне трудно перевести этот пример в области, на которых я обычно работаю.Путь к доменной модели и бизнес-логике
Все эти шаблоны приходят к выводу о том, что модели домена должны существовать в их собственном маленьком пузыре, без каких-либо ссылок на что-либо, не должны подвергаться представлению о привязке, должны быть POCOs/POJO и содержать «бизнес-логику», ,
Вопрос, который я всегда задаю себе, заключается в следующем: что должна делать модель домена?
Ответ, очевидно, «Управлять бизнес-логикой», но когда я думаю о том, что может быть, у меня возникают проблемы с поиском реального мира примеров.
Например: Один типичный пример, который всегда появляется, - это финансовые приложения, где у вас может быть объект BankAccount
, который может иметь функцию TransferMoneyTo(otherAccount)
. Это звучит неплохо в теории, но в реальном мире это приложение не будет управлять всеми банковскими счетами мира, а просто счетами одного банка. Поэтому приложение реального мира должно было бы как-то связаться с сервером другого банка, чтобы инициировать эту транзакцию. Это «как-то», очевидно, является услугой , которой не разрешено ссылаться на BankAccount
. Это означает, что это не будет хорошим примером для изолированной модели домена.
До сих пор все примеры, которые я прочитал о том, где и как это, где пример работал только потому, что он пренебрегал важными деталями или тривиальными. Тривиальным я имею в виду, что «бизнес-логика» просто состояла из простой проверки (например, обязательных полей).
Все это приводит к anemic domain model (помимо проверки, возможно), которая должна быть плохой.
Мой вопрос: Что скрывает за термином «бизнес-логика» помимо проверки, что оправдывало бы необходимость в отдельной модели домена?
Примечание: Я знаю, это зависит от домена, над которым вы работаете, но я думаю, по крайней мере, какой-то пример, где DDD был бы действительно полезен, будет оценен.
Я тоже несколько смутился, но затем наткнулся на эту замечательную статью. Может также помочь вам: http://www.codeproject.com/Articles/10746/Dude-where-s-my-business-logic – Guanxi