Применяя CQRS, вы можете избежать использования геттеров в вашем AR.Кроме того, вы даже можете уменьшить количество атрибутов, которые есть в вашем AR, до тех, которые необходимы для удовлетворения некоторого инварианта.
Позвольте мне объяснить лучше.
CQRS (Разделение ответственности при выполнении командных запросов)Различает полностью операции Command и Query, которые предоставляет ваше приложение.
Операции Command изменяют состояние вашего приложения, выполняя некоторый сценарий использования.Результатом выполнения команды является событие домена, которое содержит информацию об изменении.
Затем событие домена (которое моделируется как DTO) используется для построения модели представления, которая содержит все данныевам нужно вернуться с ваших запросов.Модель представления - это DTO, которую легко сериализовать и отправлять по проводам.
Таким образом, ваши запросы (те, которые используются для наполнения вашего пользовательского интерфейса информацией) даже не увлажняют ваши AR.Они работают с вашей моделью представления, поэтому любые изменения в ней не влияют на ваш AR.
Наконец, как я уже упоминал в начале, большую часть времени у нас есть тонны атрибутов в наших AR просто для сохраненияэта информация в нашей базе данных.Однако эта информация никогда не используется для удовлетворения любого инварианта.Например, когда мы сохраняем имя пользователя, но никогда больше не используем эти данные в любом другом случае использования.Если информация уже сохраняется в событии домена и проецируется в вашей модели представления, вы можете запросить ее, чтобы избежать того, чтобы это поле в AR содержало их как можно более чистыми.