mvc - ¿Cómo organizar los controladores/presentadores en una gran aplicación JavaFx 2.0?
javafx mvc (4)
Aquí hay una serie de blogs que crean aplicaciones JEE en JavaFX 2.0 que pueden ayudarlo. Presenta varios patrones con ejemplos sobre cómo desacoplar los diferentes componentes (MVP) en una aplicación JavaFx2.
Para un proyecto, he estado trabajando en una aplicación de escritorio JavaFX 2.0 (una IU de herramienta de teclas). De la forma en que funciona JavaFx2.0 (de todos modos, en mi proyecto), el manejo de eventos de la interfaz de usuario tiene lugar en las propias clases de la interfaz de usuario de JavaFX 2.0 (por ejemplo: eventos onclicked () o escuchas de cambio de propiedad).
En este momento, uso una clase estática con un método: getController (), que todas las clases de UI usan para acceder al único controlador de la aplicación (de alguna manera me pareció complicado pasar el controlador a todas las más de 50 clases de UI).
Sin embargo, el problema es que ese controlador se está haciendo muy grande. Tiene demasiados métodos (todos los métodos de lógica de negocios a los que mis clases de UI deben acceder). Aunque solo pasa las llamadas de métodos a mi modelo / servicio, todavía hay muchas excepciones que deben detectarse en el nivel del controlador para manejarlas en la interfaz de usuario (mostrar mensajes de error, etc.).
¿Alguien sabe de una manera clara de hacer que todo este patrón MVC / MVP funcione mejor para mi aplicación sin que las clases UI / Controlador / Modelo dependan directamente de cada una? Tal vez un controlador diferente para cada caso de uso? Pero entonces, ¿cómo lo haría para que la clase de UI correcta obtenga el Controlador correcto sin saberlo directamente? Tal vez usando una interfaz?
Hace un tiempo coloqué un tutorial básico en mi sitio web sobre cómo se puede implementar el patrón MVC usando Java y Javafx 2. La clase de modelo siempre está desacoplada y no debería saber nada sobre el controlador y el visor. Si este es un proyecto grande, recomendaría el uso de módulos donde tenga su modelo, visor y controlador. Un módulo podría ser el portal de administración o el visor de mapas de Google, etc.
http://www.pergande.net/blog/article/post/Javafx+2.0+MVC/id/1
Realmente no sé Java FX, por lo que deberías tomar mi respuesta con un grano de sal. Miré un poco los tutoriales de Java FX, pero todos parecen ser pequeños ejemplos sin arquitectura de ningún tipo ... MVC u otro.
Tal vez no deberías esforzarte demasiado para tener un patrón MVC limpio. Me parece que cada elemento de la interfaz de usuario es en sí mismo una unidad MVC, por ejemplo, una etiqueta contiene texto (el modelo), su representación gráfica (la vista) y maneja los eventos (el controlador).
Puede que solo esté haciendo su vida más dolorosa al tratar de tener un controlador global separado.
Sin embargo, puede mantener un modelo separado, que sería necesario, por ejemplo, si está mostrando el contenido de una base de datos (el modelo). Sin embargo, si está haciendo algo bastante simple, basta con utilizar el estado de la interfaz de usuario como su modelo sería suficiente; mantener los datos (modelo) por separado en el programa solo le haría perder tiempo sincronizando los datos en la interfaz de usuario y los datos en el modelo separado. La duplicación de datos es mala y debe evitarse tanto como sea posible.
Te propongo que pruebes el marco de JRebirth
Proporciona un patrón simple pero poderoso que le ayudará a estructurar su aplicación.
Este marco es joven y se mejorará de acuerdo con los comentarios recibidos. No dudes en enviarnos algunos.
http://www.jrebirth.org/doc/Overview.html
Consulte la página de información general y el código fuente proporcionado para obtener más información.
Demo en vivo también están disponibles