Я читал о доменно-ориентированном дизайне почти два года и осторожно вводил некоторые концепции в свою повседневную работу или, по крайней мере, планировал, как то, что я регулярно делаю, можно сделать в доменно-управляемом дизайне.
Один из выводов, к которому я начал приходить, особенно в ответ на прочтение более подробной информации об источнике событий и разделении ответственности по запросам команд (CQRS), заключается в том, что, возможно, доменные объекты предназначены для использования только в целях записи. Чтобы быть более ясным, кажется, что то, что люди тонко предлагают в большей части документации, которую я прочитал, что доменные объекты отвечают за выполнение ориентированных на домен операций / вычислений, проверки, а затем существуют в основном, чтобы обеспечить путь к постоянству через инфраструктура, предоставляемая в рамках реализации репозитория. Хотя мне действительно нравится тот факт, что это может значительно упростить модель предметной области, поскольку она снимает с себя ответственность разоблачения состояния.
Если действительно верно, что доменные объекты в основном должны использоваться как объекты только для записи, то это вызывает у меня некоторые вопросы, на которые, я надеюсь, кто-то может ответить.
- Как можно выполнить модульные тесты для объекта, который имеет сеттеры, или методы, которые изменяют состояние объекта, но не предоставляют внешне открытый интерфейс для чтения состояния, например, из методов получения свойств в C #? Можно ли выставлять состояние только для того, чтобы сделать этот объект тестируемым?
- Как показать пользователю результаты вычислений или операций, выполненных в домене, без необходимости их сохранения, а затем извлечь результаты из постоянного хранилища вне контекста домена? Можно ли выставлять состояние исключительно с целью показать результаты?
Является ли эмпирическое правило, что единственными получателями свойств (получателями доступа) должны быть те, которые также доступны для записи в домене? Или, иначе говоря, следует избегать только свойств, доступных только для чтения, поскольку они существуют только для целей чтения и, таким образом, не играют необходимой роли в реальной модели предметной области?
Материалы по теме: