Algumas vezes no decorrer que eu desenvolvi softwares, cedo ou tarde, acaba ocorrendo este tipo de caso, e resolvemos da mais diversa maneira, gostaria de saber se há um design pattern para isso, ou até mesmo uma forma elegante para resolver este tipo de problema.
Supondo que eu tenha esta classe:
public class Produto {
private Integer id;
private String descricao;
private Double preco;
// Getters & Seters.
}
Vez ou outra, eu preciso por exemplo mostrar o preço formatado no padrão brasileiro R$10.00, outra vez no americano US$10.00 (sem levar em consideração o locale da maquina). Para esses casos criamos metodos no bean com o devido nome, ex:
public String getPrecoBrasileiro() {
//...
}
public String getPrecoAmericano() {
//...
}
agora a dúvida é, certa vez, entre uma camada ou outra (ou não), ou até mesmo num metodo X, eu preciso ter por exemplo um atributo adicional no meu bean, por exemplo um Flag para saber se eu devo ou não tomar uma ação especial para aquele objeto… Eu não queria cada vez que ter uma condição para aquele objeto, ir e sujar meu bean com variaveis não @Transient (já pensando em JPA).
Eu dei uma lida por cima do pattern Proxy, até entendi o uso dele, e gostaria de saber se não aplicaria também ao meu problema (apesar que, sem usar interfaces, acho que não daria pra ser mais proxy), exemplo:
public class ProdutoProxy {
private Produto produto;
private boolean inserirProduto;
public ProdutoProxy(Produto produto) {
this.produto = produto;
}
public Produto getProduto() {
return this.produto;
}
public void setInserirProduto(boolean inserirProduto) {
this.inserirProduto = inserirProduto;
}
public boolean isInserirProduto() {
return this.inserirProduto;
}
}
sendo: produtoProxy.getProduto();
ou
public class ProdutoProxy extends Produto {
private boolean inserirProduto;
public void setInserirProduto(boolean inserirProduto) {
this.inserirProduto = inserirProduto;
}
public boolean isInserirProduto() {
return this.inserirProduto;
}
}
sendo: ProdutoDAO.inserir((Produto) produtoProxy);
Alguem tem alguma outra sugestão ?