用c++语言设计具有类型安全的事件调度程序、事件源和事件监视程序



需要一些帮助来整理c++(非c++ 11)仿真框架的设计选项。用户创建一个"事件调度程序",并在"事件"发生时注册兴趣(使用"观察者")。调度程序内部持有"事件源",用于检测事件激活并管理发送给观察者的通知。观察者类、事件类和事件源类之间是1:1:1的映射关系。

我想用

扩展这个系统
  1. 仅在调度程序中注册事件监视器的任何子集的能力(请求不支持的通知将失败)
  2. 事件源的替代实现(例如,每个事件一个或多个观察者)
  3. 扩展事件类型(即继承)。Watcher和Source可以处理子类,就好像它们是基类一样,尽管功能减少了。
  4. 用户定义的事件、事件源和事件监视器。对于全新的事件

我考虑过使用"事件类型标识符"(字符串或Base。派生符号),它工作,但感觉不正确(例如,类型安全依赖于运行时整数,继承有限,类型强制转换太多……)对代码结构和机制的建议将不胜感激。

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

所有事件继承自单个基类,所有事件处理程序继承自(不同的)单个基类。这使得所有事件源和调度程序都是统一的。事件由基类中的处理程序检查和筛选。

这是一个粗略的10分钟的总体结构草图。草图中没有事件源,因为我不完全清楚它们应该是什么样子。我只是从main()中触发事件

最新更新