Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Estou com dúvida no curso de Design Patterns para bons programadores, no exercício do capítulo Muitos Descontos e o Chain of Responsibility.

Sobrescreveria o construtor, mas isso não evitaria um erro no caso de o usuário informar null para a requisição. Qual a melhor forma?

6 respostas

Realmente é um construtor sem parametro ou recebendo null, e na classe você trata no método responde(Requisicao, Conta) quando receber null.

Neste caso teria que tratar o null na requisição lançando uma exceção.

Neste caso teria que tratar o null na requisição lançando uma exceção.

Oi Jaaziel

Você conseguiu solucionar sua dúvida?

solução!

Teria seus métodos responde semelhantes a esse:

    public void responde(Requisicao req, Conta conta) {
      if(req.getFormato() == Formato.XML) {
        System.out.println("<conta><titular>" + conta.getTitular() + "</titular><saldo>" + conta.getSaldo() + "</saldo></conta>");
      } else if (resposta != null){
          resposta.responde(req, conta);
      }else{
        //Não realiza comportamento algum
      }
    }

Eu criei a classe SemResposta, eu a deixei sem construtor. Tomei como base que o "chain of responsibility" precisa de uma classe de fim de corrente. Correto?

/**
 * Created by rpimenta on 5/27/16.
 */
public class WithOutFormat implements FormatAccount{

    @Override
    public String getFormatted(Account account, Format format) {
        return null;
    }

    @Override
    public void setNextFormat(FormatAccount formatAccount) {
        //this method doesn't need return anything because it's the end of the chain.
    }
}