在C ++中设计事件调度程序,事件源,具有类型安全性的事件监视器

时间:2012-12-25 19:04:48

标签: c++

在C ++(无C ++ 11)中为模拟框架整理设计选项需要一些帮助。 用户创建“事件调度程序”并在“事件”发生时注册兴趣(使用“观察者”)。调度程序内部保存“事件源”,用于检测事件激活并管理对观察者的通知。观察者,事件和事件源类之间存在1:1:1的映射。

我想用

扩展系统
  1. 仅在调度程序中注册任何事件观察者子集的能力(请求不受支持的通知将失败)
  2. 事件源的替代实现(例如,每个事件的一个或多个观察者)
  3. 扩展事件类型(即继承)。 Watcher和Source可以处理子类,就像它们是基类型一样,虽然功能有所减少。
  4. 用户定义的事件,事件源和事件监视器。对于全新的事件
  5. 我考虑使用“事件类型标识符”(字符串或Base.Derived表示法),它可以工作但感觉不正确(例如,类型安全依赖于运行时整数,继承是有限的,太多的类型转换。 ..) 非常感谢代码结构和机制的建议。

1 个答案:

答案 0 :(得分:0)

这是使用dynamic_cast的正确情况。它只需要在一个地方。

所有事件都从单个基类继承,并且所有事件处理程序都从(不同的)单个基类继承。这使得所有事件源和调度程序均匀。事件由基类中的处理程序检查和过滤。

This是一个粗略的10分钟草图,描述了整体结构的样子。草图中没有事件源,因为我不完全清楚它们应该是什么样子。我只是从main()开火事件。