В контексте установок DDD на модели домена есть запах кода. Их следует избегать по той простой причине, что они не являются частью домена. В нем нет существительных, которые эксперт домена может понять, а изменения в данных должны проходить через определенные методы.Сеттеры в доменной модели
Пример:
customer.StreetName = ...
customer.City = ...
В то время как правильный способ сделать это будет иметь customer.ChangeAddress
метод, который мог бы затем опубликовать событие и т.д. и т.п .. По крайней мере, от моего понимания это все теории звука, и я могу полностью понять, почему сеттеры в модели домена не очень желательны.
НО: Без сеттеров на вашей модели домена эти методы довольно сложно проверить.
Как получить экземпляр клиента для выполнения моих тестов, если я не могу его построить, не имея ни конструктора большой задницы, который принимает ВСЕ аргументы, либо делает магию отражения? Я использую NHibernate в бэкэнд, поэтому NHibernate уже делает некоторую магию отражения, чтобы заполнить эти поля в первую очередь.
Но это очень плохо, если у вас есть ctor с 10 аргументами. (И то же самое можно сказать и о заводском методе).
Любые советы по этому вопросу?
привет Daniel
Итак, какова альтернатива для объектов с глубоким вложенным значением? Как вы можете их заменить? Я получил ~ 18 листов Excel иерархических данных, где почти все неизменно. –
Хороший вопрос об неизменности :) Почему это отличается в системе CQRS? Из того, что я собираюсь, я мог бы использовать Event Sourcing даже с нормальной моделью домена, просто записывая все команды, которые вызывают в модель домена – Tigraine