Estimados foreros:
Pido disculpas anticipadas si este tema es demasiado obvio o si demuestro estar muy perdido. La cuestión es que llevo muchos años desarrollando aplicaciones en Java, pero realmente, lo más que yo llegué a ver en la carrera fue programación estructurada, no poo, así que mi código fuente, es muy mejorable. Aunque los programas que hago tienen la costumbre de funcionar, y bien :), creo que podrian estar mejor organizados a nivel de código fuente.
Supongo que lo adecuado cuando se hacen aplicaciones de escritorio en cualquier lenguaje de programación moderno es utilizar la arquitectura modelo-vista-controlador.
La teoría la entiendo. Entiendo perfectamente lo que es el modelo, lo que es la vista, y lo que es el controlador. Pero en la práctica, en mis programas tengo dificultades en separar las tres partes. Quizas lo que mas claro tengo es que es la vista. Si no os importa, quisiera proponer un ejemplo en concreto.
Supongamos un programa que recupera los datos de una tabla de clientes, y los presenta en un grid en una pantalla. En esa pantalla, se podrian borrar, modificar, o insertar nuevos clientes.
Si no lo he entendido mal, el modelo interactua con la bd, y gestionaría las altas, bajas y modificaciones. La vista simplemente pinta los datos cuando es necesario, y el controlador responde a las acciones del usuario, y le comunica al modelo las mismas.
Ahora bien, metiendonos ya en el caso concreto de java. Entiendo que la vista serían las clases de representación grafica, en concreto JTable, y todas las clases auxiliares para pintar los datos en un grid (renderers de celda, editores de celda, etc etc).
El controlador, ¿sería el frame donde esta ese Jtable? O el frame tambien es parte de la vista. En caso de que sea parte de la vista, ¿que seria el controlador? Si mi programa tiene un Frame, ¿tendria que haber otra clase a mayores con el metodo main que haría de controlador?
Y el modelo, ¿sería el TableModel a partir del cual se construye el Jtable? ¿Si escribo métodos para el alta/baja/modificacion de datos, irían dentro del modelo? ¿Entonces extendería la clase TableModel, y le añadiría lo necesario para acceder a la base de datos ? ¿O el modelo de la arquitectura MVC no tiene nada que ver con el "Model" a la hora de contruir tablas en Java?
¿Estoy mezclando muchos conceptos?
Saludos y gracias
RC