Durante a navegação, o usuário adiciona diversos Shopping\Product ao Shopping\Cart, com suas respectivas quantidades. Ao concluir a escolha e adição dos produtos, existe a opção por finalizar a compra, transformando um Shopping\Cart em um Shopping\Order.
Enquanto um Shopping\Cart é apenas um agregador de Shopping\Product, um Shopping\Order envolve alguns comportamentos adicionais, como total da compra, descontos, taxas, etc. O design de um Shopping\Order deve ser de tal forma que esse participante possa reaproveitar as implementações para iteração dos itens do carrinho, adicionando os comportamentos específicos relacionados com o pedido e sua finalização.
Como deve ser, então, o design de um Shopping\Order?
- Ele deve derivar
Shopping\Cart?
- Ele deve implementar alguma interface específica?
Como implementar as possíveis opções de pagamento, entrega de mercadoria, descontos, etc, e como esses participantes devem interagir com o Shopping\Order?
Durante a navegação, o usuário adiciona diversos
Shopping\ProductaoShopping\Cart, com suas respectivas quantidades. Ao concluir a escolha e adição dos produtos, existe a opção por finalizar a compra, transformando umShopping\Cartem umShopping\Order.Enquanto um
Shopping\Carté apenas um agregador deShopping\Product, umShopping\Orderenvolve alguns comportamentos adicionais, como total da compra, descontos, taxas, etc. O design de umShopping\Orderdeve ser de tal forma que esse participante possa reaproveitar as implementações para iteração dos itens do carrinho, adicionando os comportamentos específicos relacionados com o pedido e sua finalização.Como deve ser, então, o design de um
Shopping\Order?Shopping\Cart?Como implementar as possíveis opções de pagamento, entrega de mercadoria, descontos, etc, e como esses participantes devem interagir com o
Shopping\Order?