Salve Brothers of Java!!
Gostaria de de discutir a forma em que estou construindo meu sistema Swing em camadas.
Bom, a tempos atrás estava eu procurando uma forma de fazer o mapeamento objeto-relacional
até que me deparei com este artigo
e gostei da forma de mapeamento.
Bom, mas a partir desta forma de mapeamento, eu comecei a bolar uma forma de para melhor me adaptar.
Vou colocar um exemplo, para que fique mais clara a forma em que estou desenvolvendo:
Por exemplo no cadastro de usuários.Tenho minha classe(bean) Usuario:
public class Usuario{
private int iCodigo;
private String sLogin;
private Sring sSenha;
//Métodos get set simples
//...
}
uma interface para o DAO:
[code]
public interface IUsuarioDAO{
void incluir(Usuario usuario) throws MinhaExcecao;
void alterar(Usuario usuario) throws MinhaExcecao;
void excluir(Usuario usuario) throws MinhaExcecao;
boolean valida(Usuario usuario) throws MinhaExcecao, UsuarioNaoEncontradoException;
///...
}[/code]
o DAO:
[code]
class UsuarioDAO implements IUsuarioDAO{
private static UsuarioDAO usuarioDAO = new UsuarioDAO();
private UsuarioDAO{
}
public void incluir(Usuario usuario){
.
.
.
}
public void alterar(Usuario usuario){
.
.
.
}
public void excluir(Usuario usuario) throws MinhaExcecao{
.
.
.
}
public static UsuarioDAO getInstancia(){
return usuarioDAO;
}
//...e por aí vai...
}[/code]
Minha classe de negócio,
[code]
public class CadastroDeUsuarios{
private IUsuarioDAO usuarioDAO = FactoryUsuarioDAO.getInstancia().getDAO();
public void gravar(Usuario usuario){
}
public void excluir(Usuario usuario) throws MinhaExcecao{
usuarioDAO.excluir(usuario);
}
}[/code]
E minha Factory:
[code]
class FactoryUsuarioDAO{
private static FactoryUsuarioDAO factoryUsuarioDAO = new FactoryUsuarioDAO();
private FactoryUsuarioDAO(){
//Carrega informações de qual DAO deve ser carregado em um properties ou XML
}
public IUsuarioDAO getDAO(){
//faz os testes e retorna a instancia a ser usada
return UsuarioDAO.getInstancia();
}
public static FactoryUsuarioDAO getInstancia(){
return factoryUsuarioDAO;
}
}[/code]
Bom daí o que faço:
No meu view(JFrame, JInternalFrame e etc...), instancio um objeto do tipo CadastroDeUsuarios(que aplico as regras de negócio), que por sua vez obtém através do Factory o DAO que faz as operações no banco.Por enquanto não estou trabalhando com ele distribuído, mas caso venha, crio uma interface para a classe de cadastro(Business).
Bom, as vezes acho que estou escrevendo demais, mas me parece que é assim mesmo.Gostaria que dessem suas opniões para discutirmos se
está bom e se não qual é a melhor forma.
O que acham?! :roll:
Bom, espero ter sido claro, e espero críticas também.
A Paz!!