Да, но мне почему-то кажется, что тогда будет инвариант от которого мы защищаемся на этапе добавления. Ни о каком удалении из корзины не идет речи.
Я вот сейчас и хочу понять, инвариант ли это, т.е. утром у нас была валидная корзина, когда товар удалили - она невалидна, т.е. там есть удаленный товар.
Как вариант был научить корзину переходить из невалидного состояния в валидное путем удаления всех товаров, которые "не в продаже" или "удалены".