AV
В контекст магазина я унес только productId, потому что мне все равно что там за название и картиночки - главное он есть и доступен на складе. Все прекрасно было до того момента, пока я не узнал, что товары в процессе эксплуатации могут не только добавляться, но еще и удаляться (soft-delete, т.е. они "скрыты", если так можно сказать).
В итоге теперь кейс такой: у меня есть полностью готовая корзина к заказу, мне надо все продукты перенести в заказ, попутно узнав количество на складе.
Правильно ли я делаю сейчас: у меня есть класс корзины и внутри фабричный метод для заказа.
Что-то вроде toOrder(address, warehouse service). Внутрь этого метода (не в конструктор) я передаю интерфейс склада через который можно узнать текущее количество заказа. Теперь у меня появляется еще один аргумент в методе - catalogService - через который я должен узнать, а не удалился ли товар вообще за время, пока корзина простаивалась, итого получается:
function toOrder(address, customer, warehouseService, catalogService)
у меня собственно 2 вопроса по этому поводу:
1) Лучше ли унести ли это все в доменные сервисы, ибо мне не нравится вообще, что корзина в методе получает какие-то адреса и прочие поля, необходимые для заказа
2) Правильно ли пользоваться warehouseService, catalogService такими сервисами внутри контекста магазина