212 похожих чатов

Так а в целом это хорошая практика прокидывать инстасы одних

агрегатов в методы других для проверки инвариантов?

18 ответов

25 просмотров

вообще нет, так как ты для принятия решений достаешь стэйт другого агрегата.

Alexander- Автор вопроса
Sergey P
вообще нет, так как ты для принятия решений достае...

Не понимаю. Не в этом ли прелесть такого моделирования, что при видно откуда у каких данных растут ноги. Если рассмотреть другой кейс: Есть водитель Есть машина Водители привязываются к машинам. У одной машины не может быть более 2 водителей, а у одного водителя более 4 машин. Мы это реализовываем так: Метод Driver.addCar: получает на входе агрегат Car 1. Проверяет, что у водителя еще есть место для новой машины. 2. Добавляет в Driver.carIds референс на машину 3. Вызывает Car.addDriver с референсом на себя 4. Если Car.addDriver фейлит, то удаляем из Driver.carIds ссылку на машину Метод Car.addDriver: получает на входе агрегат Driver 1. Проверяет есть ли место для нового водителя. Если нет, фейлит. 2. Проверяет добавлена ли машина к водителю. Если нет фейлит Потом сохраняем два агрегата. Инварианты соблюдены

Sergey P
вообще нет, так как ты для принятия решений достае...

Как лучше организовать принятие решений? Прокидывать только влияющие на решение значения?

Алексей
Как лучше организовать принятие решений? Прокидыва...

Идеально - тот кто владеет данными принимает решение. Когда ты планируешь количество страниц ты по сути владение передаешь, теперь мол у тебя есть у сессии контроль На все это влияет понятие консистентности данных, насколько вероятно что пока ты данные запрашивал они могли устареть и как это влияет на консистентность. Скажем если все операции происходят последовательно и вероятность конфликтов низкая то все проще. Если же ты делаешь условный аукцион то там уже конфликты неизбежны и придется учитывать конкурентные операции

Sergey P
Идеально - тот кто владеет данными принимает решен...

То есть решение принимается на уровне сервиса, который работает с репозиториями?

Алексей
А кто владеет?

Давай так, а кто у нас вообще в этом цирке выступает

Sergey P
Давай так, а кто у нас вообще в этом цирке выступа...

Выступают агрегаты, сервисы, и инфраструктура В моем манямире сервисы отвечают за взаимодействие агрегатов, запись/чтение этих самых агрегатов в бд; инфраструктура отвечает за взаимодействие с внешним миром через всякие API

Алексей
Выступают агрегаты, сервисы, и инфраструктура В мо...

А что такое агрегат? Как ты их себе представляешь.

Sergey P
А что такое агрегат? Как ты их себе представляешь.

Структура, включающая в себя кучу моделей, агрегатов, или valueObject

Алексей
Структура, включающая в себя кучу моделей, агрегат...

Что такое модели, почему агрегаты в агрегатах могут быть. К vo вопросов нет

Sergey P
Что такое модели, почему агрегаты в агрегатах могу...

Объект, который содержит данные, и правила их поведения

Sergey P
Что такое модели, почему агрегаты в агрегатах могу...

Мне всегда казалось, что агрегаты могут быть в агрегатах, не задумывался как-то над этим :/

Sergey P
Правила поведения - это как?)

Бизнес требования, иными словами Нельзя открыть страницу, которой нет в книге; нельзя иметь меньше 0 продуктов на складе

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта