1

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

我想扩展系统

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

我考虑过使用“事件类型标识符”(字符串或 Base.Derived 表示法),它可以工作但感觉不正确(例如,类型安全依赖于运行时整数,继承受到限制,类型转换太多......)希望对代码结构和机制提出建议。

4

1 回答 1

0

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

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

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

于 2012-12-25T20:27:22.850 回答