5

这应该是一个相当简单的问题,但我似乎无法在互联网上找到一个好的答案。

我一直在研究 Java FX,发现它很有趣,尽管我无法满足于如何设法将逻辑与程序的表示分开。

注意:这可能
是Controller.java 文件中的 Javafx 2.0 How-to Application.getParameters()重复
但是接受的答案中的建议是使变量静态,我也不希望这样做。

背景

我发现的所有教程都有一个控制器,它应该是演示文稿和 good'ol MVC 方式的逻辑之间的连接。然而,正是在这里,我发现自己磕磕绊绊,因为我不想初始化一些东西,在这种情况下不重要的东西,并将其传递给我的Controller

问题

我应该将东西传递给我的控制器还是应该负责初始化(自己或通过实例化另一个具有该责任的对象)?

TL;博士

我想在Java FX中将东西传递给我的控制器,我应该这样做还是不好的做法?如果我应该传递东西,我该怎么做?

一些代码来澄清:

这是我不想做的事情:

主要班

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

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();
}

示例控制器(带注释)

@Override
public void initialize(URL url, ResourceBundle rb) {
    //Intialize a bunch of stuff here.
    connectionManager = new MyConnectionManager();    
}
就像我想做的那样:

主要班

@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("ChatGUI.fxml"));
    MyConnectionManager connectionManager = new MyConnectionManager();
    root.addConnectionManager(connectionManager);

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();
}

示例控制器(带注释)

@Override
public void initialize(URL url, ResourceBundle rb) {
    //Intialize a bunch of stuff here.
    connectionManager = new MyConnectionManager();    
}

public void addConnectionManager(ConnectionManager manager) {
    this->myManager = manager; 
} 

我想实现类似于上面第二个例子的东西,这是可能的还是我对 MVC 模式有一些基本的误解?

4

0 回答 0