每当更新持久数据结构 (PDS) 时,我都需要一个 GUI 控件来更新。
当用户执行某些操作时,我需要更新 PDS。
例如,SWT 树和简单的树数据结构。
有很多手动的,丑陋的方法可以做到这一点,但在我看来,这是一种非常普遍的情况,并且可能会有一种非常干净的方法。
我一直在阅读有关FRP,镜头,演员等的信息......似乎可以有一种非常简单,干净,有效的方法来处理这种情况。
我能想到的是拥有一个对 PDS 具有可变引用的组件。每次更改 var 的值时,此组件都可以使用新版本的 PDS 引发事件。您的 GUI 控件可能正在侦听该事件,并通过使用新信息重新绘制自身来对其进行反应。另一种选择是侦听事件的组件是 GUI 控件的父级,通过创建它的新实例来做出反应,因此控件可以在构造函数中接收 PDS 并仅绘制自身一次。
持久数据结构永远不会更新。您可能具有对持久数据结构的引用,该结构在更改新版本时会更改为新版本。如果你想跟踪PDS中的增量变化,那将是很尴尬的。问题是,在你存储PDS的新版本时,你仍然拥有旧版本。也许您可以运行差异来产生增量更改。
是的,有一个很好和干净的方法:价值模型。在 Scala 中实现应该很容易(我在快速搜索中没有找到任何东西)。AFAIK Spring Rich Client 中嵌入了一个 Java 实现。
你如何描述它,似乎用户调用在GUI中采取了某些操作,然后必须更新GUI和数据库。只要数据库更新是副作用,您就可以完全依赖所有 SWT 事件。