Gostaria de saber se há outra maneira além da que implementei, ao passar o próximo item da corrente pelo construtor. Da maneira como implementei, não gostei da abordagem, porque na classe organizadora da corrente, tive de escrever a sequência da cadeia de trás para frente, visto que a o objeto que deve ser passado no parâmetro "proxima" já deve estar criado.
Há outra maneira de fazer de modo que fique mais elegante a passagem do "proxima" pelo construtor?
public class Csv implements Resposta {
private Resposta proxima;
Csv(Resposta proxima){
this.proxima = proxima;
}
@Override
public void responde(Requisicao req, Conta conta) {
if (req.getFormato() == Formato.CSV) {
String formatado = conta.getTitular() + ";" + conta.getSaldo();
System.out.println("CSV: " + formatado);
} else {
proxima.responde(req, conta);
}
}
}
////////////////////////////////
public class CadeiaDeRespostas {
public void serializa(Conta conta, Requisicao req){
Resposta semformato = new SemFormato();
Resposta porcento = new Porcento(semformato);
Resposta csv = new Csv(porcento);
Resposta xml = new Xml(csv);
xml.responde(req, conta);
}
}