2

我正在寻找一种将属性更改事件从孙子传播到其父级的正确方法。假设我们有一些树结构,当其中一个叶子的某些属性发生变化时,应该通知该树的根。我想,一种方法是将属性更改侦听器从节点添加到其子节点,然后将事件重新触发到前任。另一种方法是让根订阅其所有子级的属性更改事件,而不管层次结构如何。所以问题是如何正确地做到这一点?有什么模式吗?

4

2 回答 2

2

在我的一个项目中,我们为此开发了一个框架。最后,我们的决定是显式订阅嵌套结构的属性,而不是重新触发事件。这会变得非常混乱。

我们的解决方案是一个基于地图的模型,由树状结构组成。可以在树中的任何位置注册侦听器。为了让事情更好用,我们将它包裹在一个代理 shell 中,这使得树结构消失在 pojos 后面(树结构是在模型构建时构建的)。

当然,我们寻找已经可以做我们想做的事情的框架,但是没有。所有现有的框架都只处理平面 pojo。这是一项艰巨的工作,但现在我们对此感到非常满意。

于 2012-12-18T22:44:54.593 回答
0

我认为有一个权衡取决于您修改树的频率与传播事件的频率相比。

如果树的变化频繁,我会通过树上的直接父级将信息传递回。唯一需要的设置是每个节点中的父指针。这也很简单。

如果树的变化相对不频繁,并且通知过程的性能很重要,那么在根和每个叶子之间建立直接的侦听器关系可能会更好。

于 2012-12-18T22:44:27.857 回答