0
respostas

Proposta Aula 2 - 6.Recebendo o próximo ítem da corrente pelo construtor

Minha percepção foi que, para este exercício, a escolha do Chain of Responsibility não é o mais adequado. Poderíamos deixar o próprio enum Formato possuir uma estratégia de responder no formato adequado, ficando a solução mais próxima ao padrão Strategy mesmo.

O enum ficaria:

public enum Formato {

          XML (new RespostaEmXml()),
          CSV (new RespostaEmCsv()),
          PORCENTO (new RespostaEmPorcento());

          private Resposta resposta;

          private Formato(Resposta resposta) {
              this.resposta = resposta;
          }

          public Resposta getReposta() {
              return this.resposta;
          }
}

Exemplo de uma das respostas:

public class RespostaEmPorcento implements Resposta {

    public void responder(Requisicao req, Conta conta) {
        System.out.println(conta.getTitular() + "%" + conta.getSaldo());
    }

}

Exemplo da chamada, que poderia ser melhorada sobre as responsabilidades:

Requisicao req = new Requisicao(Formato.CSV);
Conta conta = new Conta("Michele", 49000.00);
req.getFormato().getReposta().responder(req, conta);