2012-12-18 28 views
2

我正在寻找一种适当的方式将盛大子项目的属性更改事件传播给其父项。 假设我们有一些树结构,并且当树的某个叶子的某些属性发生变化时,应该通知这棵树的根。 我猜想,其中一种方法是将节点的属性更改侦听器添加到其子节点,然后重新触发事件给前导。 另一种方法是让root用户订阅所有子级的属性更改事件,而不考虑层次结构。 所以问题是如何正确地做到这一点?它有任何模式吗?从盛大(盛大)子项目向父项目传播属性更改事件的正确方法

回答

0

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

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

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

2

在我的一个项目中,我们开发了一个框架来做到这一点。最后,我们的决定是明确地订阅嵌套结构的属性,而不是像重新激发事件那样。这会变得非常混乱。

我们的解决方案作为一个基于地图的模型,其中包含一个树状结构。可以在树中的任何地方注册监听者。为了使事情更好使用,我们将其包装在一个代理外壳中,这使得树结构消失在pojos后面(在构建模型时树结构将从其中构建)。

当然,我们寻找的框架可以做我们想做的,但没有。所有现有的框架只处理扁平的pojos。这是很多工作,但现在我们对此非常满意。

+0

顺便说一下,我们主要使用该模型来将GUI元素绑定到复杂的pojos上。 – sorencito