репозитории?
как вы логич связь такую провели? репозитории для того, чтобы чинхронизации стейта приложения, причем тут иммутабельность сущностей?
UoW + Репозитории, предполагают, что объекты мутабельные. Достали объект из репы, отредачили, uow сделал свою работу
А зачем их заменять? Репозитории работают точно так же, просто изменение сущностей происходит через копирование (на самом деле компилятор часто опускает копирование, но это не меняет сути)
Скопировали сущность из репозитория, сделали нужные операции, заменили изначальную сущность в репозитории
если заменил изначальную, то в другом потоке проблемы будут
Чем хочешь, назови это персистер, гецтвей, оно главное что б снаружи было иначе нет смысла все это желатьн
У репозитория по хорошему нет save. Это коллекция без итератора
В таком случае заменяем save на list.replace Суть примерно та же
Мой вопрос изначально был про то есть ли аналог понятия imperative shell / functional core для ооп. Как я понял его можно применять в ооп, но при условии что объекты иммутабильные. Но если объекты иммутабильные то тот же патерн репозитория можно смело выбрасывать. Потому что он предназначен для кейса с мутабельными объектами. Итого. Получается нет аналога такого понятие. Эрик Эванс, Роберт Мартин, Мартин Фаулер все пишут про изоляцию предметной области, и, это отличается от functional core.
https://www.destroyallsoftware.com/talks/boundaries
У тебя в целом почему-то есть какая-то бд в уравнении
если эти нюансы начинают влиять на дизайн - значит абстракция не выходит - значит что-то пошло не так
потому и говорю - возможно сама абстракия не сильно помогает. По факту эта абстракция работает когда мы воспринимаем приложение как однопоточное приложение без проблем с конкурентным доступом. Ну или получение объектов из коллекции вызывает блокировку других потоков.
Обсуждают сегодня