在整理 C++(非 C++11)仿真框架的设计选项时需要一些帮助。用户创建一个“事件调度器”并注册(使用“观察者”)对“事件”发生的兴趣。调度程序内部包含“事件源”,用于检测事件激活并管理对观察者的通知。观察者、事件和事件源类之间存在 1:1:1 映射。
我想扩展系统
- 仅在调度程序中注册任何事件观察者子集的能力(请求不受支持的通知将失败)
- 事件源的替代实现(例如,每个事件一个或多个观察者)
- 扩展事件类型(即继承)。Watcher 和 Source 可以像处理基本类型一样处理子类,尽管功能有所减少。
- 用户定义的事件、事件源和事件观察者。对于全新的事件
我考虑过使用“事件类型标识符”(字符串或 Base.Derived 表示法),它可以工作但感觉不正确(例如,类型安全依赖于运行时整数,继承受到限制,类型转换太多......)希望对代码结构和机制提出建议。