Skip to content

Instantly share code, notes, and snippets.

View alexduarte's full-sized avatar

Alexsander Duarte Pimenta alexduarte

  • IFood
  • São Paulo
View GitHub Profile
<code>
public class CalculadorDeDescontos {
public double calculaDesconto(Orcamento orcamento){
DescontaPorCincoItens d1 = new DescontaPorCincoItens();
DescontaPorMaisDeQuinhentosReais d2 = new DescontaPorMaisDeQuinhentosReais();
//DescontaPorVendaCasada d3 = new DescontaPorVendaCasada();
SemDesconto d3 = new SemDesconto();
d1.setProximo(d2);
d2.setProximo(d3);
public interface Desconto {
double desconta(Orcamento orcamento);
void setProximo(Desconto proximo);
}
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 class Conta {
private double saldo;
private String nomeDoTitular;
public Conta(String nomeDoTitular, double saldo){
this.nomeDoTitular = nomeDoTitular;
this.saldo = saldo;
public class DescontaPorCincoItens implements Desconto {
private Desconto proximo;
public double desconta(Orcamento orcamento) {
if(orcamento.getItens().size()>5){
return orcamento.getValor()*0.1;
}
public abstract class TemplateDeImpostoCondicional implements Imposto {
public double calcula(Orcamento orcamento) {
if(deveUsarMaximaTaxacao(orcamento)){
return maximaTaxacao(orcamento);
}
else {
return minimaTaxacao(orcamento);
import java.util.ArrayList;
public class IHIT extends TemplateDeImpostoCondicional {
;
public boolean deveUsarMaximaTaxacao(Orcamento orcamento) {
return existe(orcamento);
}
import java.util.Date;
public class Conta {
private String titular;
private String banco;
private String telefone;
private double saldo;
private int numeroConta;
private int numAgencia;
public abstract class Imposto {
private final Imposto outroImposto;
public Imposto(Imposto outroImposto){
this.outroImposto = outroImposto;
}
public Imposto(){
public class ImpostoMuitoAlto extends Imposto {
public ImpostoMuitoAlto(Imposto outroImposto) {
super(outroImposto);
}
public ImpostoMuitoAlto() {