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