TComponent 中的 Observers 属性
Posted
技术标签:
【中文标题】TComponent 中的 Observers 属性【英文标题】:Observers property in TComponent 【发布时间】:2011-11-09 09:19:32 【问题描述】:您好 Delphi XE2 TComponent 有一个新的 "Observers" property。不幸的是,这方面的帮助条目是空的。有谁知道这个新属性有什么好处以及如何使用它? 编辑:嗯,我知道它与 LiveBindings 有关,但我很想知道更多关于它的信息,而且由于我无法访问 XE2 源代码,所以我无法调查自己。
【问题讨论】:
Stefan Glienke 还有一篇博文提到了 Delphi XE2 中的implemention of the observer pattern into TComponent
here。
【参考方案1】:
它与 LiveBindings 有关。一个相当酷但内容广泛的主题,在新的 DocWiki for XE2 中进行了解释。
【讨论】:
对不起 Rudy,但 DocWiki 对我的问题并没有真正的帮助。我非常了解 LiveBindings,但我的问题是真正了解它们背后的内容以及它们是如何实现的。因此,我的问题的背景是它们与 LiveBindings 的关系。 嗯...我看到,观察者的角色确实没有解释。我想我会在一段时间内删除我的答案。 “因此我的问题的背景是它们与 LiveBindings 的关系。”如果是这种情况,将这些信息放在您的问题中会有所帮助。【参考方案2】:这里解释了观察者模式的Delphi实现:
http://blogs.teamb.com/joannacarter/2004/06/30/690
我会在有机会查看源代码后立即更新答案并提供更多详细信息。
【讨论】:
这很有趣,但似乎与新的 TComponent.Observers 属性无关【参考方案3】:Delphi XE7 documentation 现在更深入地了解了Observers 的细节:
Observers 是一个只读属性,它返回添加到的 TObservers TComponent,以便使用由 使用 LiveBindings 或开发人员自己的观察者 目的。
请注意,Fringe 中的Observer 可以在许多Pattern 相关事件的现场看到。
旁注:
观察者还可以检测到 RTL 必须抛出 EProgrammerNotFound exception 的情况。
【讨论】:
以上是关于TComponent 中的 Observers 属性的主要内容,如果未能解决你的问题,请参考以下文章
为啥某些 Delphi 组件需要“AOwner: TComponent”来构造它们?
Observers: Scaling ZooKeeper Without Hurting Write Performance