Анемичная модель данных ( ADM против RDM)
Я пытаюсь понять разницу между ADM и RDM.
На мой взгляд, обсуждение ADM и RDM сводится к тому, где вы на самом деле определяете свой рабочий процесс (взаимодействие объектов). RDM внедряет объект хранилища данных и объект проверки в конструкторы бизнес-объекта (модели). Методы бизнес-объектов затем определяют рабочий процесс для обеспечения совместной работы этих объектов.
ADM передает все эти взаимодействующие объекты (модель, репозиторий, объект проверки в viewModel / controller и т. Д. Методы viewmodel / controller определяют коллаж рабочего процесса между объектами.
Это правильно или я упускаю что-то более фундаментальное?
1 ответ
Я предполагаю, что RDM = Rich Domain Model. Основное различие между ADM и RDM (которое фактически является "реальной" моделью предметной области) состоит в том, что RDM моделирует бизнес-процессы (проблемы и решения, для которых было разработано приложение) настолько естественными, насколько это возможно.
Модель предметной области моделирует поведение бизнеса, в то время как анемичная модель состоит в основном из POCO, которые содержат данные, в основном имитируя таблицу db. Эти POCO затем используются почти процедурным образом, проверяются и обрабатываются службами (которые во многих случаях являются просто статическими методами).
В двух словах, ADM состоит из объектов, которые не имеют (или очень мало) поведения, они действуют только как пакеты данных, в то время как RDM моделирует бизнес-процессы настолько точно и естественно, насколько это возможно. Большую часть времени анемичный домен является следствием подхода, ориентированного на БД, где все начинается и вращается вокруг БД.
Контроллеры, представления и DI-контейнеры - это просто детали реализации.