Solucionado (ver solução)
Solucionado
(ver solução)
4
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.

Feedback referente ao exercício 4 do capitulo 2.

Fiz o exercício usando minha lógica. Comparando com a resposta dada pelo Alura (Resposta Certa). Reparei que não tinha o método main e nem o Chain.

É isso mesmo ? A intenção é essa ?

Obrigado !

4 respostas

Oi Eric,

Cola a sua resposta aqui pra eu ver?

Ok.

Meu Chain

///

package br.com.bluesoft.designpatterns.exercicio;


public class VerificaFormato {

    public Formato verifica(Requisicao requisicao){

        Resposta r1 = new RespostaXML();
        Resposta r2 = new RespostaCVS();
        Resposta r3 = new RespostaPorcento();

        r1.setProximo(r2);
        r2.setProximo(r3);

        return r1.resposta(requisicao);
    }
}

///

Main

///

package br.com.bluesoft.designpatterns.exercicio;

import br.com.bluesoft.designpatterns.exercicio.Conta;

public class TestaFormato {
        public static void main(String[] args) {

            VerificaFormato verifica = new VerificaFormato();

            Conta conta = new Conta ("Joao", 200.0);
            Requisicao requisicao = new Requisicao(Formato.PORCENTO);
            requisicao.adicionaConta(conta);

            System.out.println("O fomato escolhido pela conta do: " + conta.getTitular() + " no valor de " + conta.getSaldo() + " é: " + verifica.verifica(requisicao));

        }

}

///
///

public class RespostaXML implements Resposta{

    private Resposta proximo;

    public Formato resposta(Requisicao requisicao){

        if(requisicao.getFormato() == Formato.XML) return Formato.XML;

        return proximo.resposta(requisicao);
    }

    @Override
    public void setProximo(Resposta proximo) {
        this.proximo = proximo;

    }
}

///

///

...Outras classes(RespotaCVS, RespostaPorcento, Requisicao, Conta)

....Enum (Formato)

....Interface (Resposta)

Essas não tiveram nada de incomum. ///

Obrigado.

solução!

Oi Eric,

Faltou vc fazer "algo útil" em cada nó da sua cadeia. Por exemplo, ali você verifica que a requisição é XML, então precisa devolver texto em XML. Igual na resposta!

De resto, não tem problema que não tem main na resposta. O importante é o padrão.

Entendeu?

Entendi Aniche !

Sim reparei que não tinha sido "útil" quando vi a resposta, e tive o mesmo feedback da minha equipe, e então reformulei minha resposta em um outro package.

Mas, muito obrigado. Agora esclareceu, pois pensei que o Chain e Main, estavam diferentes do meu também.

Novamente obrigado,

Eric Guilherme