2008-12-27 21 views
8

Esto es sobre una tarea escolar así que estoy tratando de hacer las cosas por el libro. Siento que estoy teniendo las garras de Java, pero una buena práctica de programación, patrones de diseño, etc. son todos nuevos para mí.MVC en Java

He hecho mi modelo y funciona bien. Contiene una clase de estudiante que contiene una serie de campos con información del estudiante (obviamente). Ahora quiero que esta información se muestre en un par de JLabels. Es más fácil pasar un objeto entero de estudiante a la GUI y usar JLabel.settext.getname() etc. varias veces y sin dudas esto funcionará perfectamente. Pero creo que el objeto del alumno es parte del modelo y al pasarlo a la GUI ya no estoy usando un patrón MVC. ¿Estoy aquí?

Hice un objeto de controlador para pasar datos hacia y desde el modelo y la GUI, pero para pasar solo cadenas a las etiquetas o configurar el texto JLabel a través del controlador, necesito muchos ajustadores en la GUI, o Tendría que hacer todos los campos globales de JLabels que tampoco se sientan bien.

¿Algún consejo sobre esto?

Respuesta

1

la GUI debe preocuparse por todas las cosas de la interfaz. Supongo que tienes una clase que es tu GUI para hacer 'cosas' al estudiante con tus JLabels. Simplemente pase su instancia de estudiante a esta clase y deje que haga lo que debe hacer. Cuando esté listo llamará a un método de control para hacer lo que sea necesario hacer.

OOD se ocupa de pasar los objetos que desee manipular. No es necesario separar los objetos para pasar en MVC. Se supone que debes pasar eso realmente si este es un caso general. El modelo define los objetos de datos con los que trabajará ... o más específicamente, el sistema trabajará con (controlador) y los usuarios trabajarán con (GUI). Estas clases están diseñadas para ser transmitidas. Tendrá que hacer mucho más trabajo si desencapsula toda la información jeje :)

4

Tenga en cuenta que todos los componentes de Swing utilizan el patrón MVC internamente, por lo que ya tienen un modelo. Esto es más relevante con widgets complejos como JTable, donde definitivamente desea que su modelo implemente la interfaz TableModel.

La gran pregunta es cómo conciliar su modelo de dominio con los modelos internos de los componentes Swing individuales. Una forma de hacer esto es tener setModel() y getModel() métodos en la clase de interfaz gráfica de usuario, que se traducen entre ellos, es decir setModel() toma su modelo y pide setText() en los JLabels individuales, etc.

0

La vista necesita su modelo para crear la interfaz de usuario (extracción del modelo) y para recibir actualizaciones (modelo por empuje). Idealmente, el modelo se presenta a la vista en forma de solo lectura. Los controladores proporcionarían los métodos que la vista usará para actualizar el modelo, para una buena separación de preocupaciones.

Hay muchas formas e interpretaciones diferentes de lo que MVC es exactamente, intente buscar en Google. Además, a menudo puede encontrar MVC en diferentes niveles en su aplicación (por ejemplo, el modelo Swing, su modelo de dominio, ...).

Con MVC y variantes en MVC, lo más importante es que puede explicar subpatrones individuales (Observer, Fachada, ...) y defender las elecciones de diseño que hizo (ventajas/desventajas) en vez de tratar de implementar único y único patrón MVC, si existiera.

Así que mi consejo para su tarea, si es posible, por supuesto, sería implementar algo que funciona bien, inspirado en lo que ha leído en MVC y sus subpatrones, y solo después ver si está de acuerdo o en desacuerdo con algunos descripciones "tradicionales" de los patrones de MVC que puede encontrar.

+0

Eso es todo cierto, pero no olvide que la tarea a menudo se trata de su maestro y no de la tarea. Tristemente. –