2008-09-16 12 views
7

Tengo un poco 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.¿La mejor manera para que una GUI de Swing se comunique con la lógica de dominio?

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

  • la interfaz de usuario ser capaz de convertir un gesto de usuario en una acción de dominio
  • el dominio ser capaz de enviar el estado/información de resultado de nuevo a la interfaz de usuario con fines de exhibición

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

Respuesta

2

Definitivamente MVC - algo como esto example que claramente divide las cosas. El problema con los ejemplos de Swing es que parecen mostrar la MVC todos los que trabajan en la materia oscilación, lo que no me parece correcto

+0

Ese artículo se ve muy bien escrito; Lo verificaré y veré cómo voy. –

0

He usado el patrón Observer (utilizando AspectJ magic) en el pasado con algún éxito, pero he descubierto que, a menos que haya tenido cuidado, se convirtió rápidamente en un clúster ... uhh .. flick?

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

Editar:

Para ampliar un poco en mi respuesta, que estábamos usando SWT, se balancean, por lo que tu caso es distinto. Básicamente, utilizamos AspectJ para conectar la transferencia de datos de los componentes de la interfaz de usuario a los objetos del modelo. Estos objetos modelo eran POJOs tontos.

La lógica de negocio real se realizó al "mirar" los objetos del modelo con AspectJ y desconectar el evento requerido si cambiaban. Entonces, si cambiaras un valor en un cuadro de texto, AspectJ dispararía y copiaría ese valor en un POJO. Si ese campo en el POJO tuviera un evento para la lógica de negocios que fuera , entonces incendio. Si esa lógica modificara cualquier POJO (y podría) AspectJ notaría y copiaría el valor del POJO en el componente UI.

+0

Creo que estás confundiendo POJOs (http://en.wikipedia.org/wiki/POJO) con JavaBeans. Estos últimos son tontos almacenes de datos, pero los primeros pueden ser de hecho tipos de dominio ricos con todo el rango de comportamiento/lógica. El bit "simple" de POJO simplemente indica que no hay dependencia en ningún marco o tecnología específica. –

+0

Sí, mi mal. Puesto actualizado para reflejar :) – SCdF

+0

@Andrew Swan: creo que te refieres a que _former_ son tiendas de datos estúpidas, pero _latter_ puede ser un tipo de dominio rico con todo el rango de comportamiento/lógica. –

0

MVC es fantástico para un widget de individuo, sin embargo se pone un poco rebelde cuando tiene pages y forms con muchos widgets.

Una cosa que podría valer la pena examinar (y no me lo hace suyo, no he utilizado realmente, sólo implementado algo muy similar para mí) es la Beans Binding Framework (JSR295)

Cuestiones relacionadas