加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Delphi中实现观察者模式的最佳方法

发布时间:2020-12-15 04:31:29 所属栏目:大数据 来源:网络整理
导读:我在Delphi中发现了不同的观察者模式实现,如: Sourcemaking Design Patterns和 Delphi Hobbyist. 一般来说,在Delphi中实现观察者的最佳方法是什么? 我会说使用接口因为代码更具可读性. 解决方法 没有“好”或“最好”的方式来实现模式. 您选择的实施取决于
我在Delphi中发现了不同的观察者模式实现,如:
Sourcemaking Design Patterns和 Delphi Hobbyist.

一般来说,在Delphi中实现观察者的最佳方法是什么?
我会说使用接口因为代码更具可读性.

解决方法

没有“好”或“最好”的方式来实现模式.
您选择的实施取决于您希望如何使用它.

例如,您可以使用泛型功能(自Delphi 2009以来可用)来简化许多模式的使用.

如果您使用Pre Delphi-3版本,或者想要避免引用计数,则无法使用接口.
(当与传统的基于所有者/ Owee的生命时间管理混合时,引用计数可以打开一个新的蠕虫;确保下降暴露来自正确祖先的接口的类 – 如TInterfacedObject – 并观察您的生命时间管理).

除了关于如何实现观察者模式的“纯粹”问题之外,能够识别Delphi中实现观察者模式的类也是很好的.

例如,TDataSet/TDataSource也实施了observer pattern.
Data Aware Controls的整个概念取决于它,所有这些都是通过TDataLink进行的.

我编写了一个基于TDataLink的TDataLinkReflector组件,它将TDataLink中的所有虚拟方法反映到TDataLinkReflector中的事件.

基于TDataLinkReflector,我编写了TDataAwareControlController组件,它们根据TDataSet,TFields和连接到TDataSet的TDataSource(以只读着色,需要等)为Data Aware Controls执行各种有趣的操作.

但是即使像事件这样看似简单的东西也可以看作基于该模式(虽然事件是单一的,所以只有一个观察者可以观看一个事件).

实现这一目标的另一个类是TApplicationEvents;每个实例都允许您监听TApplication上的任何事件.

我希望能够阐明Delphi中使用观察者模式的位置.

–jeroen

PS:对我写的组件感兴趣的人可能想看CodeRage video mentioned here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读