Pregunta

Tengo algo de lógica de dominio implementada en varios POJO.Quiero escribir una interfaz de usuario Swing para permitir al usuario iniciar y ver los resultados de varias acciones de dominio.

¿Cuál es el mejor patrón/marco/biblioteca para las comunicaciones entre la interfaz de usuario y el dominio?Esto se reduce a:

  • la interfaz de usuario puede convertir un gesto del usuario en una acción de dominio
  • el dominio puede enviar información de estado/resultado a la interfaz de usuario para fines de visualización

Soy consciente de que MVC es un concepto amplio y he jugueteado con el patrón Observer (cuya implementación de Java tiene algunos inconvenientes si lo entiendo correctamente), pero me pregunto si existe una mejor práctica aceptada para este problema.

¿Fue útil?

Solución

Definitivamente MVC - algo como esto ejemplo lo que divide claramente las cosas.El problema con los ejemplos de Swing es que parecen mostrar que todo el MVC funciona dentro del material de swing, lo cual no me parece correcto.

Otros consejos

mvc es fantástico para un widget individual, sin embargo, se vuelve un poco rebelde cuando tienes pages y forms con muchos widgets.

Una cosa que podría valer la pena analizar (y no la apoyo, en realidad no la he usado, solo implementé algo muy similar para mí) es la Marco de enlace de beans (JSR295)

He usado el patrón Observer (usando la magia de AspectJ) en el pasado con alguno éxito, pero descubrió que, a menos que tuviera cuidado, rápidamente se convertía en un grupo.eh..¿película?

Rápidamente se volvió difícil de administrar y, lo más importante, extremadamente difícil de depurar.

Editar:

Para ampliar ligeramente mi respuesta, estábamos usando SWT, no Swing, entonces YMMV.Básicamente utilizamos AspectJ para conectar la transferencia de datos desde los componentes de la interfaz de usuario a los objetos del modelo.Estos objetos modelo eran POJO tontos.

La lógica empresarial real se realizó "observando" los objetos del modelo con AspectJ y activando el evento requerido si cambiaban.Entonces, si cambia un valor en un cuadro de texto, AspectJ activará y copiará ese valor en un POJO.Si ese campo en el POJO tuviera un evento para la lógica de negocios que entonces fuego.Si esa lógica modificara algún POJO (y podría hacerlo), AspectJ lo notaría y copiaría el valor del POJO en el componente de la interfaz de usuario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top