Estava pensando em adotar um seguinte padrão por questões de centralização.
class Funcionario {
private Funcionario() {
}
public static Funcionario criarNovo() {
return new Funcionario();
}
public static Funcionario consultar(int codigo) {
return pegarDoBanco(codigo) ;
}
public void salvar() {
salvarNoBanco(this);
}
public void excluir() {
excluirDoBanco(this);
}
}
Funcionario f = Funcionario.criarNovo();
f.setCodigo(1);
f.setNome("Maria");
f.salvar();
f = Funcionario.consultar(1);
f.excluir();
Fica interessante ter método estáticos para tratar da “colecao” e métodos de instancia para tratar da individualidade.
O problema é como compartilhar recursos sem deixar a arquitura feia.
ex:
// suponha que exista a classe departamento
Departamento d = Departamento.consultar(1);
Funcionario f = Funcionario.consultar(1);
f.setDepartamento(d);
f.salvar();
ou
Conexao c = new Conexao();
// suponha que exista a classe departamento
Departamento d = Departamento.consultar(c,1);
Funcionario f = Funcionario.consultar(c,1);
f.setDepartamento(d);
f.salvar();
O problema é compartilhar recursos (conexao, parametros , etc) entra as duas classes sem passar parâmetros.