следующему вопросу - у агрегата есть value object статус например, и вот собственно значение value object чья ответственность? я к агрегату напрямую обращаюсь что бы узнать что его статус сейчас активен или обращаюсь к value object?
Грубо:
1. Agr->isActive
2. Agr->status->isActive
Только первый. Все вопросы задаём только агрегату, не экспозим его внутреннее состояние. Забыл как правило называется.
Есть даже паттерн getters eradication, когда vo сам отвечает за свою внутреннюю обработку, а свои "сырые" поля наружу не светит.
А ещё есть паттерн tell not ask, когда ты вообще не спрашиваешь у агрегата его статус, и в зависимости от этого принимаешь какое-то решение, а сам агрегат решает в зависимости от статуса, например, разрешено ли действие или нет
Обсуждают сегодня