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

时间:2012-01-08 16:36:17

标签: java model-view-controller controller mvp javafx-2

对于一个项目,我一直在研究JavaFX 2.0桌面应用程序(keytool UI)。 JavaFx2.0的工作方式(无论如何在我的项目中),UI事件处理发生在JavaFX 2.0 UI类本身中(例如:onclicked()事件或属性更改侦听器)。

现在我使用带有方法的静态类:getController(),所有UI类都使用它来访问应用程序的一个控制器(不知何故,将控制器传递给所有50多个UI类似乎很麻烦) 。

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

任何人都知道一种简洁的方法可以使整个MVC / MVP模式更好地适用于我的应用程序,而UI / Controller / Model类不直接依赖于彼此吗?每个用例可能有不同的控制器?但是,我将如何制作它以便正确的UI类获得正确的控制器而不直接知道它?也许使用界面?

4 个答案:

答案 0 :(得分:3)

我真的不懂Java FX,所以你应该尽量回答我的问题。我看了一下Java FX教程,但它们似乎都是微小的例子,没有任何类型的架构...... MVC或其他。

也许你不应该努力拥有干净的MVC模式。在我看来,每个UI元素本身就是一个MVC单元,例如标签包含文本(模型),其图形表示(视图),它处理事件(控制器)。

你可能只是试图拥有一个独立的全局控制器,让你的生活变得更加痛苦。

但是,您可以保留一个单独的模型,例如,如果您要显示数据库(模型)的内容,则必须使用该模型。但是,如果您正在做一些非常简单的事情,那么仅使用UI的状态就足够了;将数据(模型)单独保存在程序中只会让您浪费时间同步UI中的数据和单独模型中的数据。数据重复是邪恶的,应尽可能避免。

答案 1 :(得分:2)

我建议你测试JRebirth框架

它提供了一个简单但功能强大的模式,可以帮助您构建应用程序。

这个框架很年轻,将根据收到的反馈进行改进。不要犹豫,发送一些。

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

查看概述页面和提供的源代码以了解更多信息。

现场演示也可用

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我已经在my website上提了一个关于如何使用Java和Javafx 2实现MVC模式的基础教程。模型类总是解耦,不应该对控制器和查看器有任何了解。如果这是一个大型项目,我建议使用那里有模型,查看器和控制器的模块。模块可以是管理员门户或谷歌地图查看器等。

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