这应该是一个相当简单的问题,但我似乎无法在互联网上找到一个好的答案。
我一直在研究 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 模式有一些基本的误解?