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

Estou com dúvida no curso de Design Patterns no Chain of Responsibility.

Quando criamos um desconto temos que implementar o método setProximo para encadear os descontos. Porém, se este método não for chamado, a classe quebra, porque este atributo é obrigatório para a classe funcionar. Neste caso acho que o melhor seria criar em todos os desconto um construtor que recebe o desconto. Mas se algum deles implementar o construtor padrão, também não é possível garantir o funcionamento.

Não seria melhor fazer a interface Desconto virar uma classe abstrata? Seguindo a regra do "é um" seria viável pois todos são Desconto. Desta forma poderíamos obrigar todas as classes filhas a implementar o construtor da classe mãe que recebe desconto e a funcionalidade não quebraria. Outra vantagem é que as classes filhas não conseguiriam implementar o construtor padrão e poderíamos disparar uma exceção no construtor da classe mãe, caso o desconto fosse null.

1 resposta
solução!

Oi André!

Sem dúvida! O que vc achar que fica melhor, vale!

Essa é a graça de um padrão. O importante é o que ele faz. A implementação fica a cargo de cada programador! Você vai ver que usará o mesmo padrão 10 mil vezes, mas a implementação de cada um deles será diferente, toda vez!

Um abraço