Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

É ruim juntar dois patterns?

Gostaria de saber se há algum problema na minha implementação. Juntei dois design patterns, o chain of responsibility e o template method.

public abstract class DescontoTemplate {
    private DescontoTemplate proximo;

    public double desconta(Orcamento orcamento) {
        if (condicaoParaDesconto(orcamento)) {
            return calculaDesconto(orcamento);
        } else {
            return proximo.desconta(orcamento);
        }

    }

    public abstract boolean condicaoParaDesconto(Orcamento orcamento);

    public abstract double calculaDesconto(Orcamento orcamento);

    public void setProximo(DescontoTemplate desconto) {
        this.proximo = desconto;
    }
}

public class DescontoParaMaisDe500Reais extends DescontoTemplate {

    @Override
    public boolean condicaoParaDesconto(Orcamento orcamento) {
        return orcamento.getValor() > 500;
    }

    @Override
    public double calculaDesconto(Orcamento orcamento) {
        return orcamento.getValor() * 0.07;
    }

}

public class DescontoParaMaisDe5Itens extends DescontoTemplate {

    @Override
    public boolean condicaoParaDesconto(Orcamento orcamento) {
        return orcamento.getItens().size() > 5;
    }

    @Override
    public double calculaDesconto(Orcamento orcamento) {
        return orcamento.getValor() * 0.1;
    }

}
1 resposta
solução!

Oi Alexandre, tudo bom?

Não tem problema nenhum em usar mais de um pattern na mesma implementação. Inclusive, o código final ficou mais desacoplado mesmo =)

Parabéns pela sua abordagem!

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software