Изменения документа Мнение

Редактировал(а) Alexandr Fokin 2026/09/15 13:34

От версии 1.4
отредактировано Alexandr Fokin
на 2026/09/15 12:54
Изменить комментарий: К данной версии нет комментариев
К версии 1.3
отредактировано Alexandr Fokin
на 2026/09/15 12:51
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -2,13 +2,8 @@
2 2  | |(((
3 3  Мнение автора: на основании своего опыта я выступаю скорее за анемичную модель: когда сущность в основном контейнер для данных, почти не содержащий логику, и наборе команд/сервисов для взаимодействия с ними (и именно на команды ложиться ответственность за сохранение консистентности агрегатов).
4 4  \\Для меня вполне допустим следующий вариант: в доменной логике мы не создаем и не редактируем сущности напрямую, а делаем это через ISetter компонент. В контракт конкретного ISetter мы закладываем способы создания и изменения сущности. В таком случае у нас есть компонент, который указывает на контракт и допустимые способы взаимодействия с конкретной сущностью.
5 +Пример поведения, располагаемого в ISetter: 1) типизированные билдеры под конкретные сценарии использования (инварианты), 2) взаимодействие со связанными сущностями (родительская-дочерняя) (добавление, смена родительской сущности), 3) вычисляемые свойства (которые меняются при изменении полей).
5 5  
6 -Пример поведения, располагаемого в ISetter:
7 -
8 -1. типизированные билдеры под конкретные сценарии использования (инварианты)
9 -1. взаимодействие со связанными сущностями (родительская-дочерняя) (добавление, смена родительской сущности)
10 -1. вычисляемые свойства (которые меняются при изменении полей).
11 -
12 12  У этого подхода еще есть плюс, связанный с [[Expression tree ~| Деревья выражений>>doc:Разработка.NET.C#.Рантайм и типы.Expression tree | Деревья выражений.WebHome]]. А именно мы легко можем строить Expression (например для проекции или Update запроса) (открытые setter).
13 13  )))|
14 14  | |{{code language="c#"}}// Entity rules (interaction interface)
... ... @@ -19,9 +19,6 @@
19 19  
20 20   // Specification rules
21 21   ITEntityConditions Conditions { get; }
22 -
23 - // Discrimination union (OneOf) for invariants.
24 - IOneOf { get; }
25 25  }{{/code}}|[[Specification>>doc:Архитектура и модели.Группа\. Архитектурные подходы.DDD | Domain-driven design.Specification.WebHome]]
26 26  
27 27