É o seguinte, considerando que você já construiu sua interface gráfica vamos entender os outros componentes.
Controller : Essa é a classe responsável por receber uma ação, ação essa que foi desencadeada na GUI pelo usuário que esta usando o sistema.
O controller também é responsável por recuperar as informações passadas pela interface, formata-las e enviar para uma outra camada
que seria a camada de negócio.
Após o processamento na camada de negócio ele responde ao usuário.
Service: Essa seria sua camada de negócio onde você irá validar suas informações e processa-la propriamente dito, isso inclui enviar para uma outra
camada que é responsável por armazenar no banco de dados.
DAO: Classe responsável por manipular os dados do seu sistema, considerando que é um banco de dados, ela seria responsável porque salvar seus objetos
e fazer consultas dos mesmos.
Vou fazer um código de exemplo, segue:
public class MyController {
UserService userService;
public MyController(UserService userService) {
this.userService = userService;
}
@Path("/url/usuario/vai/chamar")
public Retorno createUser(User user) {
Boolean status = userService.verifyAndSaveUser(user);
return status ? new Retorn("OK") : new Retorna("Error");
}
}
Agora a sua classe de negócio, que no nosso exemplo é UserService
public class UserService {
UserDAO userDAO;
public UserService(UserDAO userDAO) {
this.userDAO = userDAO;
}
public Boolean verifyAndSaveUser(User user) {
//Valida o usuario
if (user.hasErrors()) return false;
userDAO.saveOrUpdate(user);
return true;
}
}
Sua classe de DAO seria uma alguma coisa parecido com isso:
public class UserDAO {
SessionFactory sessionFactory;
public UserDAO(SessionFactory sessionFactory){
this.sessionFactory= sessionFactory;
}
public void saveOrUpdate(User user) {
sessionFactory.getSession().saveOrUpdate(user);
}
}
Valeu pela ajuda mmaico!
Uma dificuldade que encontrei foi a seguinte: nas interfaces gráficas eu vou ter que criar as ações, certo? Essas ações eu tenho que tratar no controller? Ou têm uma certa regra dependendo do tipo de ação?
Outra questão: eu tenho que criar uma classe Principal que será responsável de chamar a tela de login. Onde eu devo colocar toda a estrutura do programa? Por exemplo, se eu quiser armazenar os dados só dos usuários num Map, onde eu instancio este Map, na classe Principal, ou na GUI que está responsável pelo Login?
Bom, consegui tratar todos os eventos, mas tem como eu colocar os Actions Listeners numa única classe, a qual seria o Controller, certo?? Eu tentei fazer uma nova classe normalmente, mas não deu certo. Você teria algum exemplo?
E ai Rapaz, eu ainda nem tive tempo que ver o seu código
Mas é o seguinte, quando se está falando de desktop com swing a coisa muda de figura, não é tão simples montar uma arquitetura organizada, porque não se tem
tantos frameworks para fazer isso pra você.
O seus actionListener irão chamar o seu controller e ai segue aquele fluxo que haviamos conversado anteriormente.
E ai man,
Atualizei seu projeto agora a estrutura esta a seguinte:
View - > ActionListener -> Controller - Classe de negócio.
Resumo:
As views somente monta a tela e recebe um actionListener para receber comportamento, esses são disparados para o controller e assim enviado
para sua classe de negócio.
Siga esse modelo porque esta parecido com WEB que fazendo um paralelo ficaria assim:
Views seriam o HTML
ActionListeners seriam o JavaScript
Controller segue no mesmo esquema
E classe de negócio tb segue o mesmo esquema.
Recebi o e-mail, estou reestruturando, muito bem feito mmaico. Valeu pela ajuda, estou conseguindo me adequar a uma metodologia kkk
Mals o encomodo aeee!