发布-订阅模式核心代码练习:
实现以下参与者:
EventObject
事件对象,用于参数传递
EventSource
事件源,用于触发事件
SubscriberTemplate
订阅器模板,保存客户代码
特殊需求:采用模板实现可定制的客户代码。
心得:
1、为了在 SubscriberTemplate 层面使 invoker 的类型无关,使用了 模板构造函数 和 MemberFunctionBounder ,将 invoker 的类型确定时机推到了 MemberFunctionBounder 层。
2、为了能在 SubscriberTemplate 调用客户代码,将 invoker 无关的接口抽象,形成 FunctionBounderBase 层。
3、为了保证 SubscriberTemplate 在赋值、拷贝、删除的时候对 bounder 对象的管理, 在 FunctionBounderBase 层添加了 clone 方法。
扩展:
1、支持非成员函数的客户代码。
2、支持非返回值的客户代码。
3、完善事件触发机制,添加注册、查找事件的功能。
本文通过具体代码示例介绍了发布-订阅模式的实现方法。包括事件对象EventObject、事件源EventSource及订阅器模板SubscriberTemplate的设计。实现了事件的注册、触发等功能,并支持不同类型的客户回调代码。
1777

被折叠的 条评论
为什么被折叠?



