Boa noite!
Gostaria de saber a opinião de vocês sobre o design abaixo:
Seguindo o exemplo da aula, tendo a interface:
public interface AcaoAposGerarNota {
void executa(NotaFiscal nf);
}
Seria melhor eu criar um método no DAO que chame outro mais expressivo, como:
public class NotaFiscalDao implements DAO<NotaFiscal>, AcaoAposGerarNota {
public void executa(NotaFiscal nf) {
salva(nf);
}
public void salva(NotaFiscal nf) { ... }
public NotaFiscal buscaPorID( ...) { ... }
}
Ou seria melhor criar uma classe observadora apenas para aquele evento de criação de NF e que implemente a AcaoAposGerarNota e use um DAO, ficando assim acoplado via interface.
public class SalvadorNFGerada implements AcaoAposGerarNota {
private DAO<NotaFiscal> dao;
(construtor com arg...)
public void executa(NotaFiscal nf) {
dao.salva(nf);
}
}
Muito obrigado!