Me surgiur a dúvida, se por exemplo eu tenho a seguinte compra na loja:
Orcamento terceiro = new Orcamento(new BigDecimal("1000"),6);
Onde o orçamento é maior que 500 e também o comprador tem mais de 5 itens.
Usando a Chain of responsability a primeira que seria atendida depende da implementação do desenvolvedor.
Nesse primeiro caso:
Desconto desconto = new DescontoParaMaisDeCincoItens(
new DescontoParaOrcamentoAcimaQuinhentos(
new SemDesconto()));
ele recebe 10% de desconto pois o que será antendido é a condição de ter mais de 5 itens, já neste outro:
Desconto desconto = new DescontoParaOrcamentoAcimaQuinhentos(
new DescontoParaMaisDeCincoItens(
new SemDesconto()));
O cliente teria 5% de desconto, pois o desenvolvedor colocou primeiro a regra de testar o valor acima. Então tudo vai depender do desenvolvedor, ou da regra de negócio que foi passado para ele?