如何在大型JavaFx 2.0应用程序中组织控制器/展示器?

16

我一直在开发一个JavaFX 2.0桌面应用程序(一个keytool UI)。在我的项目中,JavaFx2.0的UI事件处理是在JavaFX 2.0 UI类本身中进行的(例如:onclicked()事件或属性更改侦听器)。

目前,我使用一个静态类和一个方法:getController(),所有UI类都使用它来访问应用程序的一个控制器(让所有50多个UI类都传递控制器给我似乎很混乱)。

然而问题是,那一个控制器变得非常庞大!它具有过多的方法(需要由我的UI类访问的所有业务逻辑方法)。即使它只是将方法调用传递给我的模型/服务,仍然有很多异常需要在控制器级别上捕获以在UI中处理它们(显示错误消息等)。

有没有人知道一种干净的方法让整个MVC/MVP模式在不直接依赖于每个其他UI/控制器/模型类的情况下更好地工作于我的应用程序?也许为每个用例使用不同的控制器?但是如何使正确的UI类获得正确的控制器而不直接知道它呢?也许使用接口?


你的控制器的作用不太清楚。 - toto2
也许将您的用户界面分成各个部分,每个部分都有自己的控制器? - Tower
4个回答

3

我不太了解Java FX,所以你需要对我的回答持保留态度。 我稍微看了一下Java FX的教程,但它们似乎都是没有任何架构的小例子... MVC或其他。

也许你不应该过于努力地实现一个清晰的MVC模式。在我看来,每个UI元素本身就是一个MVC单元,例如Label包含文本(模型),它的图形表示(视图)和处理事件(控制器)。

你可能会因为试图拥有一个单独的全局控制器而让自己的生活更加痛苦。

然而,如果你正在显示数据库内容(模型),那么你可能需要保留单独的模型。 但是,如果你正在做一些相当简单的事情,仅使用UI状态作为你的模型就足够了;在程序中将数据(模型)分开保存只会使你浪费时间同步UI和单独模型中的数据。数据重复是不好的,应尽可能避免。


2
我建议您测试JRebirth框架。
它提供了一种简单而强大的模式,可以帮助您构建应用程序。
这个框架还很年轻,将根据收到的反馈进行改进。请不要犹豫发送反馈。

http://www.jrebirth.org/doc/Overview.html

请查看提供的概述页面和源代码以了解更多信息。
还有现场演示可供参考。

链接已恢复(曾经暂时失效)。 - Sébastien B.

1

这里有一系列博客JavaFX 2.0中构建JEE应用程序,可能会对您有所帮助。它提供了几个模式,并且通过示例演示了如何在JavaFx2应用程序中解耦不同的组件(MVP)。


0

我之前在我的网站上发布了一份基础教程,介绍了如何使用Java和Javafx 2实现MVC模式。模型类始终应该是解耦的,不应知道控制器和视图的任何信息。如果这是一个大型项目,我建议使用模块化方式,将您的模型、视图和控制器放入其中。一个模块可以是管理门户或Google地图查看器等。

http://www.pergande.net/blog/article/post/Javafx+2.0+MVC/id/1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接