Pregunta

Así que para mi proyecto actual, hay básicamente tres clases principales de Java:

  1. GUI
  2. Mensajería Instantánea
  3. Computación

En esencia, es necesario que haya una comunicación completa, por lo que hemos decidido utilizar el enfoque de mediador en lugar de permitir que la interfaz gráfica de usuario para ejecutar todo el proyecto.

Básicamente, el mediador va a encapsular la comunicación. El problema al que nos hemos topado es cómo permitir que los componentes GUI para actualizar sin necesidad de construir una tonelada de métodos para el mediador a llamar en cualquier momento algo completa.

Ex. Dicen que la interfaz gráfica de usuario quiere conectarse el usuario, que pasa por el mediador para crear un hilo de sesión, pero entonces el mediador tiene que retransmitir el éxito / fracaso de nuevo a interfaz gráfica de usuario, así como actualizar un mensaje de estado.

La otra cuestión es cosas que necesitan actualizar la interfaz gráfica de usuario, pero no necesitan el moderador. ¿Es práctico simplemente permitir que la interfaz gráfica de usuario para crear una instancia de esa clase y ejecutarlo o debe ir a través de todo el mediador?

Nuestro diseño original sólo tenía la interfaz gráfica de gestión de todo, pero lo que realmente mató a la reutilización. ¿Hay un método mejor diseño a usar en este caso?

¿Fue útil?

Solución

Si usted está encontrando Observador de llevar demasiado generales, mediador puede ser el mejor camino a seguir. Definitivamente creo que no se debe tener la interfaz gráfica de usuario ejecuta el programa. Si usted va a utilizar el patrón de mediador, el mediador en sí debería estar a cargo. Algo que podría considerar es una variante del patrón de comando. Si estaba utilizando Ruby, Me podría recomendar que pasa alrededor de las devoluciones de llamada de función como medio de evitar tener contacto con el mediador de la interfaz gráfica de usuario por cada pequeña cosa. Pero ya que es Java, alguna forma de encapsular una acción en el estilo de patrón de comando puede ayudar.

Otros consejos

Si no desea que la devolución de llamada / notificación se triggerd por el mediador, se puede inyectar la devolución de llamada en la función de inicio de sesión de inicio de sesión y tienen que llamar cuando se termine.

No sé cómo haría para inyectar la devolución de llamada en Java, sin embargo. En un lenguaje donde las funciones son ciudadanos de primera clase, sólo podía pasar a la función, pero estás en Java, así que supongo que tendrá que utilizar el patrón de comando como sugirieron kmorris.

También puede intentar tener la GUI dar el mediador un objeto de devolución de llamada que se encarga de recuperar los valores de retorno o ajuste de los valores que se necesita (una versión del patrón de comando). Habría entonces una por cada llamada de la GUI para el mediador.

Otra idea es agrupar los métodos que el mediador pone en trozos semánticamente relacionados. En particular, si el mediador tiene secciones donde tiende a llamar a varios métodos de interfaz gráfica de usuario en una fila:

   gui.a()
   gui.b()
   gui.c()

puede crear un único método que controla el resultado de llamar a los tres. La ventaja de los métodos semánticamente agrupadas (es decir setFileInformation sobre setFileMenu, setTab, etc.) es también entonces, si es necesario cambiar la interfaz gráfica de usuario, el contenido de los métodos podrían cambiar, pero la llamada el mediador hace no.

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