通用编程能力训练:发布-订阅模式

发布-订阅模式核心代码练习:

实现以下参与者:

EventObject

事件对象,用于参数传递

EventSource

事件源,用于触发事件

SubscriberTemplate

订阅器模板,保存客户代码

特殊需求:采用模板实现可定制的客户代码。

心得:

1、为了在 SubscriberTemplate 层面使invoker 的类型无关,使用了 模板构造函数 和 MemberFunctionBounder ,将 invoker 的类型确定时机推到了 MemberFunctionBounder 层。

2、为了能在 SubscriberTemplate 调用客户代码,将 invoker 无关的接口抽象,形成 FunctionBounderBase 层。

3、为了保证 SubscriberTemplate 在赋值、拷贝、删除的时候对 bounder 对象的管理, 在 FunctionBounderBase 层添加了 clone 方法。

扩展:

1、支持非成员函数的客户代码。

2、支持非返回值的客户代码。

3、完善事件触发机制,添加注册、查找事件的功能。

发布-订阅模式练习

你可能感兴趣的:(编程)