为了更好地理解我的问题,我会给出我的要求。这个JavaFX应用程序需要创建,编辑和导出一个非常大的表单,它有很多完成规则,用户需要很多指导。此外,这些规则甚至表单结构每1个月甚至更少都会发生显着变化。另一个问题是规则有些复杂,很少有组件可以正确完成而不知道表单状态在完全不同的部分。< / p>
所以我正在寻找一种方法来编写使其易于维护的东西。
到目前为止我一直在尝试:
创建了一个类似于GUI树的大规模树状数据结构,并将表单状态存储在其中。使用此结构通过其中的绑定包含大部分逻辑。 GUI绑定它。
遇到的问题:
我必须编写很多更改侦听器,因为我不能轻易地双重绑定到Object属性的Object属性。
UI逻辑泄漏到列表的自定义单元格中。例如:
view.getDenumire().textProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null && getItem().getTip()!= SerieFacturiModel.TipSerieFacturi.SIMPLU){
getItem().setDenumire(newValue);
}
});
我必须编写大约一百个或更多这些,并且很多时候他们有一些逻辑或触发一些其他GUI更改(错误,做他们自己的验证,有时验证依赖于大表单状态 - 应用程序状态)
所以我真的在寻找一种方法来编码验证规则,与模型同步,与应用程序状态的GUI交互是分开的东西,非常容易编写,如果需要更新则不需要超过2次更改(一个包含逻辑的逻辑,如果事先不是API的一部分,则启用注入。
奖金问题:假设事件创建2个事件链(其中事件的处理创建另一个事件,等等)依赖并改变一个有状态资源,有没有办法知道最终结果是什么?如何使应用程序永远不会处于不正确的状态?