在JavaFX应用程序中,必须对javafx.application.Application进行子类化,并且必须从此派生类中调用继承的launch()方法,尽管它是公共的,否则抛出异常.然后,launch()方法使用反射来实例化派生类,这使得在启动时很难为类成员设置值而不会丢失它们.所有这些对我来说都是不寻常的,我想知道为什么启动JavaFX应用程序是如此复杂,如果那种软件设计(设计模式?)有一个名字,或者它只是糟糕的设计?
编辑:
更具体地说,我想使用观察者模式,因此我的java应用程序在加载文档时会收到通知,如下所示:
public class MyDocumentLoader extends Application
{
private ChangeListener<Worker.State> changeListener;
public void setChangeListener(ChangeListener<Worker.State> changeListener)
{
this.changeListener = changeListener;
}
...
public void loadDocument(String url)
{
webEngine.getLoadWorker().stateProperty().addListener(changeListener);
webEngine.load(url);
}
...
}
Run Code Online (Sandbox Code Playgroud)
我需要几个方法中的回调成员,理想情况下我可以有多个加载文档的类实例,因此我可以为不同的URL设置不同的ChangeListener.