Vou exemplificar o que realmente eu preciso
por exemplo tenho objto NFiscal que ao gerar uma NFiscal eu tenho de movimentar estoque entao tenho o objeto EstoqueMovimentacao que é qse uma replica de NFiscal mas dae entra o CupomFiscal que tb vai gerar um EstoqueMovimentacao mas que nao possui os mesmos dados de NFiscal entao tenho q fazer um adapter onde transformo qualquer objeto em um EstoqueMovimentacao entao fiz assim…
[code]public interface EstoqueMovimentacaoInterface {
public abstract Integer getNumDoc();
public Double getVlIpi();
}[/code]
onde EstoqueMovimentacao implementa essa interface
crio um metodo abstrato para dizer que esse é obrigatorio e qualquer movimentacao precisa desse valor
NFiscal e CupomFiscal nao implementam de cara a interface pois cada um tem campos diferentes e iguais entao o adapter de cada um que ira implementar a interface
[code]public abstract class InicializaMovimentacao implements EstoqueMovimentacaoInterface {
public Double getVlIcms() {
return 0.00;
}
}[/code]
por exemplo Cupom Fiscal nao tem valor ipi entao inicializo com 0
[code]public class NFiscalAdapter extends InicializaMovimentacao {
private NFiscal nFiscal;
public NFiscalAdapter(NFiscal nFiscal) {
super();
this.nFiscal = nFiscal;
}
@Override
public String getNumDoc() {
return nFiscal.getNumNf().toString();
}
}[/code]
Agora aqui vem a parte chata popular varios atributos sendo q o objeto que eu quero é identico a interface que o construtor recebe movInterface
[code]public class EstoqueMovimentacaoFacade {
private EstoqueMovimentacaoInterface movInterface;
private EstoqueMovimentacao mov;
private EstoqueMovimentacaoController controller;
public EstoqueMovimentacaoFacade(EstoqueMovimentacaoInterface movInterface) {
this.mov = new EstoqueMovimentacao();
this.movInterface = movInterface;
}
private void popular() {
/**** SETAR TODOS OS METODOS ****/
mov.setNumDoc(movInterface.getNumDoc());
mov.setVlIpi(movInterface.getVlIpi());
}
public void gerar() {
popular();
controller.grava(mov);
}
}[/code]
Entao la na minha aplicaçao ao gerar uma NF
EstoqueMovimentacaoFacade facade = new EstoqueMovimentacaoFacade(new NFiscalAdapter(nFiscal));
facade.gerar();
e assim eu gravo a NF e tb a movimentacao o que estou axando estranho é a parte de NFiscalAdapter implementar EstoqueMovimentacaoInterface e ao passar para EstoqueMovimentacaoFacade nao precisar setar cada atributo na mao no metodo popular