DDD дизайн + Неизменность при использовании источников событий хорошая идея?
Это мой третий вопрос по DDD и источникам событий. Я изучал некоторые лучшие практики и не имел отношения к DDD. Хорошая идея - сделать ваши классы неизменяемыми, если это возможно.
Тем не менее, я вижу проблему в моей голове, пытаясь жениться на шаблоне Event Event + неизменная модель предметной области. поскольку
DomainModel-1.0 + e1 = DomainModel-2.0[промыть и повторить для всех событий]
Меня беспокоит, если я буду реализовывать свою модель домена как неизменную, не буду ли я создавать много объектов домена только для того, чтобы моя модель домена была актуальной, а это бесполезные ресурсы.
Я хочу знать, что если есть какая-то возможность сделать мою модель предметной области неизменной, если я планирую использовать ее с источником событий.
1 ответ
Неизменность при использовании источников событий хорошая идея?
Да.
Меня беспокоит, если я буду реализовывать свою модель домена как неизменную, не буду ли я создавать много объектов домена только для того, чтобы моя модель домена была актуальной, а это бесполезные ресурсы.
Это так. Эти потерянные ресурсы дороги? Вы измерили?
Я хочу знать, что если есть какая-то возможность сделать мою модель предметной области неизменной, если я планирую использовать ее с источником событий.
Самым большим из них является параллелизм - состояние совместного использования между параллельными операциями гораздо легче исправить, когда состояние является неизменным. Следовательно, неизменным состоянием намного легче поделиться - вам не нужно делать новые копии данных на случай, если вы столкнетесь с веткой, которая хочет что-то изменить.
Операции в неизменяемом состоянии намного проще тестировать и гораздо проще тестировать в изоляции (если вы щуритесь, это действительно тот же момент, что и выше, в несколько ином контексте).