Created
December 20, 2011 00:29
-
-
Save alexduarte/1499594 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Conta { | |
private double saldo; | |
private String nomeDoTitular; | |
public Conta(String nomeDoTitular, double saldo){ | |
this.nomeDoTitular = nomeDoTitular; | |
this.saldo = saldo; | |
} | |
public double getSaldo() { | |
return saldo; | |
} | |
public String getNomeDoTitular() { | |
return nomeDoTitular; | |
} | |
} | |
public enum Formato { | |
XML, CSV, PORCENTO; | |
} | |
public class FormatoCSV implements Tipo { | |
private Tipo tipo; | |
public String formata(Requisicao requisicao, Conta conta) { | |
if(requisicao.getFormato() == Formato.CSV){ | |
return conta.getNomeDoTitular() + "\n" + conta.getSaldo() + ";"; | |
} | |
return tipo.formata(requisicao, conta) ; | |
} | |
public void setProximo(Tipo tipo) { | |
this.tipo = tipo; | |
} | |
} | |
public class FormatoPorcento implements Tipo { | |
private Tipo tipo; | |
public String formata(Requisicao requisicao, Conta conta) { | |
if(requisicao.getFormato() == Formato.PORCENTO){ | |
return conta.getNomeDoTitular() + "\n" + conta.getSaldo() + "%"; | |
} | |
else{ | |
return tipo.formata(requisicao, conta); | |
} | |
} | |
public void setProximo(Tipo tipo) { | |
this.tipo = tipo; | |
} | |
} | |
public class FormatoXML implements Tipo { | |
private Tipo tipo; | |
public String formata(Requisicao requisicao, Conta conta) { | |
if(requisicao.getFormato() == Formato.XML){ | |
return "<nometitular>" + conta.getNomeDoTitular() + "</nometitular>" + "\n" + | |
"<saldo>" + conta.getSaldo() + "</saldo>"; | |
} | |
else{ | |
return tipo.formata(requisicao, conta); | |
} | |
} | |
public void setProximo(Tipo tipo) { | |
this.tipo = tipo; | |
} | |
} | |
public class Requisicao { | |
private Formato formato; | |
public Requisicao(Formato formato){ | |
this.formato = formato; | |
} | |
public Formato getFormato() { | |
return formato; | |
} | |
} | |
public class ServidorDeRequisicoes { | |
public String retornaRequisicao(Requisicao requisicao, Conta conta){ | |
Tipo f1 = new FormatoPorcento(); | |
Tipo f2 = new FormatoXML(); | |
Tipo f3 = new FormatoCSV(); | |
f1.setProximo(f2); | |
f2.setProximo(f3); | |
return f1.formata(requisicao, conta); | |
} | |
} | |
public class TestaRequisicoes { | |
public static void main(String[] args) { | |
ServidorDeRequisicoes server = new ServidorDeRequisicoes(); | |
Requisicao requisicao = new Requisicao(Formato.CSV); | |
Conta c1 = new Conta("Alexsander Duarte", 500.00); | |
System.out.println(server.retornaRequisicao(requisicao, c1)); | |
} | |
} | |
public interface Tipo { | |
String formata(Requisicao requisicao, Conta conta); | |
void setProximo(Tipo tipo); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment