Skip to content

Instantly share code, notes, and snippets.

@alexduarte
Created December 19, 2011 13:45
Show Gist options
  • Save alexduarte/1497299 to your computer and use it in GitHub Desktop.
Save alexduarte/1497299 to your computer and use it in GitHub Desktop.
public class DescontaPorVendaCasada implements Desconto {
private Desconto proximo;
public double desconta(Orcamento orcamento) {
if(existe("Lapis",orcamento)&& existe("Caneta", orcamento)){
return orcamento.getValor()*0.05;
}
return proximo.desconta(orcamento);
}
public void setProximo(Desconto proximo) {
this.proximo = proximo;
}
public boolean existe(String nomeDoItem, Orcamento orcamento){
for(Item item: orcamento.getItens()){
if(item.getNome().equals(nomeDoItem) && item.getNome().equals(nomeDoItem))
return true;
}
return false;
}
}
public class CalculadorDeDescontos {
public double calculaDesconto(Orcamento orcamento){
DescontaPorCincoItens d1 = new DescontaPorCincoItens();
DescontaPorMaisDeQuinhentosReais d2 = new DescontaPorMaisDeQuinhentosReais();
DescontaPorVendaCasada d3 = new DescontaPorVendaCasada();
SemDesconto d4 = new SemDesconto();
d1.setProximo(d2);
d2.setProximo(d3);
d3.setProximo(d4);
return d1.desconta(orcamento);
}
}
public class TestaDescontos {
public static void main(String[] args) {
CalculadorDeDescontos calculador = new CalculadorDeDescontos();
Orcamento orcamento = new Orcamento(1000.00);
orcamento.adcionaItem(new Item("Lapis", 350.00));
orcamento.adcionaItem(new Item("Caneta", 350.00));
orcamento.adcionaItem(new Item("Papel", 200.00));
double desconto = calculador.calculaDesconto(orcamento);
System.out.println(desconto);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment