Projeto MVC - Tornar o Controller genérico

4 respostas
java
S

Boa tarde pessoal!
Estou desenvolvendo um pequeno sistema utilizando o padrão MVC e DAO.
Observo que neste sistema para cada entidade( Cliente por exemplo ) são gerados vários arquivos - CLienteEntidades,ClienteView, ClienteController, ClienteDao.

Então, comecei a elaborar um único arquivo GenericoController ( que possui quase que 100% da funcionalidade, parecida com outras entidades) recebendo um objeto T, e então com posse deste objeto eu consigo administrar todas as funções do controller de maneira genérica para todas as minhas entidades.
Bom, este foi um sonho bem rápido, pois, logo acordei e me deparei com vários problemas.

Gostaria que alguém pudesse me auxiliar nesta questão. Ainda sou iniciante e tenho muito o que aprender. Tirei um bom exemplo de minha aplicação para ilustrar melhor minha dúvida. Ainda que seja um exemplo, este possui umas 160 linhas. Não postei porque não sei se posso utilizar de tantas linhas aqui no fórum.

Desde já, agradeço a todos!

4 Respostas

Crocodilo

www.alura.com.br , manda ver :wink:

darlan_machado

Isso acontece por que você optou por tentar generalizar uma coisa que, em geral, não se generaliza.
Veja, você pode criar um genérico para persistência, pois, tudo o que você vai fazer num banco de dados é uma das letras do CRUD - inserir ©, ler ®, atualizar (U) ou excluir (D).
Se você estiver usando algum framework de persistência, isso fica ainda mais fácil.
Se não usa, ainda assim, dá para fazer, porém, com mais trabalho.

Agora, pensa comigo, as ações (métodos) que um ClienteController vai realizar são as mesmas que um ProdutoController? Acredito que não, né?
Assim como não tem jeito, entities precisam ser específicas para cada entidade que o sistema demanda.

Agora, não meça tua evolução por quantidades de linha, senão, você se desilude com o certo e vai partir para desenvolver em programação estruturada, que terá menos linhas.

S

Valeu aí pela dica @darlan_machado. Vou me ater a isto. Pensei que generalizando o controller estaria fazendo uma boa prática de OO. Pensando melhor não seria nada parecido!! Brigado!

javaflex

Fica tranquilo que esse pensamento é comum até no ensino, em forçar o uso de OO sem ser o caso e acabar misturando responsabilidades diferentes. Uma manutenção no módulo de Clientes não pode trazer riscos para a entidade Funcionários por exemplo, são histórias diferentes, mas infelizmente ensinam por ai a cometer esse tipo de misturas. Uso de OOP é mais apropriado por exemplo a desenvolvimento de componentes, como por exemplo componentes de UI desktop e mobile, não a dados de bd relacional, que trará complexidade adicional em mapeamentos e tradução de consultas.

Criado 24 de agosto de 2018
Ultima resposta 25 de ago. de 2018
Respostas 4
Participantes 4