MVC与javaFX

我正在使用javaFX挣扎于MVC概念。 我正在使用fxml文件构建一个javaFX应用程序。

每个fxml文件都分配了一个控制器,但我不认为这个控制器是MVC模式状态的控制器。 我认为它像某种ViewController,它保存对fxml对象(按钮,窗格等)的引用。

我的问题是:这个“ViewController”和真正的“Controller”之间究竟有什么不同。 什么对象应该做什么事情? 我在哪里设置例如actionListeners?

关于MVC的思考

MVC是一个非常松散定义的模式,它对MVC中的每个事物(特别是控制器)所代表的内容(通常有些模糊)的解释是开放的。 Martin Fowler对GUI工具包的MVC架构进行了很好的讨论 。

论设计模式和FXML

基于JavaFX核心FXML的处理被构建为更多的工具包而不是完整的开发框架。 其他框架可以在JavaFX和FXML以及底层JavaFX / FXML实现和它们的控制器之上进行分层的想法不会在更高级别的框架上推动任何类型的议程或架构约束。

因此,基于核心FXML的处理及其控制器与MVC架构之间存在故意松散的类比和映射。

请参阅JavaFX和MVP – 一个设计模式的smörgåsbord,以供进一步讨论。

考虑使用更高级别的框架

您可能会受益于采用“自以为是”的JavaFX框架,例如afterburner.fx ,它使用控制器和FXML,但提供了更多严格的结构化框架。 Afterburner.fx遵循模型视图展示器(MVP)模型 。 尽管Afterburner.fx提供了比普通核心JavaFX + FXML更多的function和结构,但它通过添加一些您需要学习使用它的额外类和API以最小的方式实现。

您可以使用其定制的模式尝试JRebirth:wB-CS-Mvc

这是一个2级MVC模式,第一个MVC(应用程序级)是CSM,第二个是Mvc本身(ui级)。

  • Wave用于消息传递和异步内部事件处理
  • 将公共代码添加到任何组件的行为(C | S | M)
  • 管理应用程序命令的命令(可重用代码)
  • 服务将一些长服务处理成线程池
  • 用于管理UI模型的模型
  • 查看以创建UI
  • 控制器处理用户事件

您可以运行JRebirth Tour应用程序以了解更多信息(需要Java 8):

http://apps.jrebirth.org/jaf/3.0.0/JRebirthTour-3.0.0.jar

java -jar JRebirthTour-3.0.0.jar 

您还可以运行演示应用程序:

http://apps.jrebirth.org/demo/8.5.0/JRebirthDemo-8.5.0.jar

 java -jar JRebirthDemo-8.5.0.jar 

或浏览幻灯片(稍微过时): http : //fr.slideshare.net/SbastienBordes/javafx-unleashed-with-jrebirth-application-framework