JavaFX应用程序 - 主类的设计

时间:2016-01-29 15:37:39

标签: java design-patterns model-view-controller javafx

我目前正在尝试使用JavaFX开发应用程序,而我刚开始时就陷入困境。 我想在此实现中使用MVC模式,并使此实现尽可能可重用。 该应用程序的基本描述:

1)它使用配置文件,其中存储了应用程序使用的所有数据库连接参数(传递,登录)和其他参数。

2)所有关于配置其他应用程序的工作流程,所以它必须将两个数据库对象存储到两个不同的数据库,并通过它们在数据库中进行操作。

3)设计假定视图很少,每个视图都有自己的控制器,可以通过它们完成不同的功能,但都可以触发对数据库或配置文件的操作。

4)目标也是在使用过程中在视图之间切换时记住上一个视图的状态。

这就是我有这个问题的原因:

1)当我启动应用程序时,我测试了与数据库的连接,如果成功,我将连接到它们。我是否可以在Main类中执行此操作,或者我是否应该使用其他类来存储所有这些db对象,以防在此类中引用它们?是不是每个控制器都会使用Main类的实例,因为它必须访问这些db对象(假设我决定不使用其他类来进行所有连接)?

2)主类的作用是什么?它应该用作主视图(如在MVC中),它应该只启动应用程序并将进一步的责任传递给,例如,LoginController / View ...?

我会很满意一些明确的答案,这可能会让我有点了解这个问题。

没有愚蠢的问题,他们说......:D

1 个答案:

答案 0 :(得分:0)

正如James_D所指出的,你的Main课程应该只是那个

@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("ui_main.fxml"));

    stage.setScene(new Scene(root));
    stage.show();
}

Main课程通常不会在MVC中扮演任何角色。但是,如果您没有使用任何依赖注入框架,Main类通常会在Model,View和Controller之间执行连接。

模型是必须定位所有(业务/域)逻辑的地方。如果控制器需要访问数据库,它将使用Model的实例。模型通常包括一组提供实际功能的其他对象,例如,数据库访问,网络访问。这允许最大的灵活性,因为提供对象的功能成为单独的模块并且可以重复使用。