-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Design do participante Shopping\Order #1
Comments
Podemos extrair as implementações de iteração do carrinho para uma |
Semanticamente falando, @danizord, um Veja, não estou dizendo que um |
@netojoaobatista, ah sim, me expressei mal, minha intenção não é remover a dependência em sí, mas a composição. O |
Okay, Agora, é mesmo necessário um ProductCollection? Não seria mais simples, se |
@netojoaobatista A função da $cart = new Cart();
$cart->addItem(new Product(), 1);
$cart->addItem(new Product(), 1);
$order = new Order($cart);
$price = $order->getPrice();
$cart->addItem(new Product(), 1);
$this->assertEquals($price, $order->getPrice()); |
A pergunta permanece, @danizord. É mesmo necessário um Uma vez que trabalhamos com referências para as instâncias, modificações em Vejo duas formas de se evitar esse problema:
|
@netojoaobatista |
class Order
{
private $products;
public function __construct(Cart $cart)
{
$this->products = clone $cart->getProducts();
}
} é isso, @danizord? |
@gabrielsch sim sim, essa é uma das formas que o @netojoaobatista propôs para resolver o problema, que na minha opinião é a melhor forma, com prototype. |
Durante a navegação, o usuário adiciona diversos
Shopping\Product
aoShopping\Cart
, com suas respectivas quantidades. Ao concluir a escolha e adição dos produtos, existe a opção por finalizar a compra, transformando umShopping\Cart
em umShopping\Order
.Enquanto um
Shopping\Cart
é apenas um agregador deShopping\Product
, umShopping\Order
envolve alguns comportamentos adicionais, como total da compra, descontos, taxas, etc. O design de umShopping\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
?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
?The text was updated successfully, but these errors were encountered: