Necesito consejos para diseñar interacciones entre varias partes de mi aplicación


10

Estoy tratando de diseñar las clases "principales" de una aplicación de escritorio enriquecida basada en NetBeans Platform 7. Esta aplicación consumirá servicios HTTP y, a través de un "sistema de inserción" sobre TCP, recibirá mensajes.

  • Somos 3 desarrolladores y queremos desarrollar módulos en paralelo.
  • La aplicación será en capas (datos, negocios, presentación)
  • Usaremos el modelo de presentación para separar las responsabilidades
  • Algunos datos granulares (una Persona bean, por ejemplo) serán compartidos por varias pantallas (y posiblemente se muestren en varias pantallas al mismo tiempo)
  • ...

Podemos desarrollar pantallas individuales, pero no sabemos exactamente cómo organizar toda la aplicación y definir el contenido de cada módulo.

  1. Entonces, ¿tiene algún consejo (un patrón / mejor práctica / libro / aplicación de muestra) para coordinar / administrar las interacciones dentro de toda la aplicación?
  2. ¿Algún consejo sobre cómo definir el contenido de los módulos?

¡Gracias!


Pequeño ejemplo para ilustrar lo que quiero construir: una aplicación de gestión de usuarios de Foo

  1. Iniciar la aplicacion
  2. A la izquierda [explorador] tenemos una lista de plataformas (la lista se almacena en un archivo local)
  3. En la parte superior tenemos el botón para agregar una nueva Plataforma (también disponible con clic derecho)
  4. Al hacer doble clic en una plataforma, la aplicación llama a un servicio HTTP para recuperar una lista completa de usuarios. Esta lista se muestra en el [editor] (en una tabla J)
  5. Se inicia un proceso en segundo plano: a través de una conexión TCP recibimos mensajes
  6. Es posible agregar un nuevo usuario gracias a un botón en una barra de herramientas

Si la aplicación se inicia en otra PC y el usuario está conectado a la misma plataforma, su lista de usuarios se actualizará dinámicamente (agregar / eliminar / estado: {fuera de línea / en línea}) (gracias a los mensajes)

En el futuro se proporcionará un módulo de chat.

Mi pregunta es (en otras palabras): ¿algún consejo / mejor práctica para decidir sobre el contenido de cada módulo? Si PM (Modelo de presentación) es una buena forma de separar la vista / negocio y los datos y crear pantallas, ¿cuál es la mejor manera de vincular varias pantallas basadas en PM? Imagina que desarrollamos el Módulo de Chat, ¿cómo agregar una entrada "Discutir con ..." en el menú contextual disponible con un clic derecho en la Lista de usuarios?


3
No está claro lo que estás preguntando. ¿Qué le parece proporcionar un pequeño ejemplo para ilustrar su pregunta?
Robert Harvey

Gran publicación de Geertjan Wielenga. Contiene declaraciones de declaraciones de Tom Wheeler (miembro del equipo de NetBeans Dream): java.dzone.com/news/how-to-split-into-modules
Destroyica

Respuestas:


5

Dado su requerimiento, para comenzar con el procesamiento central, debe estar hecho de Patrón de comando y luego puede usar Patrones de plantilla para procesadores de solicitudes. Y así sucesivamente. No hay nada llamado patrón maestro. Si los hubiera, ya no nos necesitarán.

La idea es tener un diseño que le permita evolucionar con los requisitos.

Comenzaría creando una interfaz de módulo base y daría la interfaz a todos y algunas utilidades a su alrededor. Deje que todos implementen sus propios módulos basados ​​en el módulo base.


3

Yo creo que está viendo un patrón bastante clásica MVC respaldado por los servicios (REST supongo). La clave será separar los servicios de la IU. Esto no se debe a que esté introduciendo una IU alternativa, sino a que le da claridad sobre cuál debería ser su interfaz de servicio.

Entonces, cuando esté pensando en el getPeopleservicio, asegúrese de pensar en cómo una IU secundaria (no Swing) interactuaría con el servicio. Si tiene eso en mente, encontrará una solución bastante flexible / desacoplada.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.