Re[3]: Где агрегат?
От: Sinix  
Дата: 09.01.13 13:44
Оценка:
Здравствуйте, phenti, Вы писали:

S>>В вашем примере в агрегат можно запихнуть разве что пост+комментарии.

P>Мне кажется этого будет мало. User это просто данные о пользователе, пока User постит, модератор может удалить его блог, значит будет конкуренция.

Во-первых, шансы на конфликт не зависят от того, относите вы пользователя к агрегату, или нет. Ваш сценарий ничем не отличается от попытки создать пост от имени несуществующего пользователя. Решаться он должен точно так же — выдачей пользователю сообщения "вас здесь не стояло".

Во-вторых пользователь (по крайней мере большинство) — это не часть блога, а самостоятельная сущность. Его конечно можно сделать корнем агрегата, который включает в себя блог пользователя, посты в этом блоге и комметарии (в том числе других пользователей) к постам. Результат получится громоздким и не будет покрывать ни один из типовых сценариев использования. И, как всегда при подходе "паттерны ради паттернов", достаточно одного простого требования — корпоративный блог с несколькими авторами — чтобы поломать всю абстрактную красоту.

P>Голова кругом. Я исходил из того, что агрегат — это сущность от которой можно пройти по связям до других сущностей(гарантировано). Если таких сущностей несколько, то у нас получается несколько агрегатов. В данном примере от User можно пройти весь граф объектов. Просто ни как не пойму где стыкуется ООП и DDD.

Агрегат не имеет никакого отношения к DDD, это просто способ компоновки объектов в стиле json/xml/иерархических СУБД. Зачем его протаскивать везде где можно и нельзя — это к фаулероведам.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.