Skip to content

Commit

Permalink
aggregate-encapsulation
Browse files Browse the repository at this point in the history
  • Loading branch information
emacsway committed Dec 25, 2023
1 parent b0a126a commit 2f126a1
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions emacsway/it/ddd/grade/domain/aggregate-encapsulation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -419,3 +419,15 @@ Exporter
Это еще один аргумент в пользу первого варианта с отдельными сеттерами для каждого атрибута Агрегата.

Попробовав оба варианта, я остановился, все-таки, на первом, каноническом, даже несмотря на его многословность.


Импорт состояния
================

В Golang область видимости структуры доступна всему пакету, поэтому нет большой необходимости реализовывать Importer/Provider - достаточно положить Reconstitutor в тот же пакет.

В других языках может потребоваться делать Importer/Provider, что образует брешь в инкапсуляции.
Поэтому импорт состояния делают либо посредством конструктора, если поддерживается множественная диспетчеризация (overloading), либо посредством статического метода класса - чтобы можно было создать, но невозможно было изменить.
Правда, при этом возникает сложность с синхронизацией состояния объектов в IdentityMap при фиксации изменений (commit), ведь состояние агрегата теперь недоступно для синхронизации.
В таком случае остается только очистить IdentityMap при фиксации изменений.

0 comments on commit 2f126a1

Please sign in to comment.