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.
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.
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!
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.