gpt4 book ai didi

c++ - 在 C++ 中设计具有类型安全的事件分发器、事件源、事件观察器

转载 作者:太空宇宙 更新时间:2023-11-04 14:11:21 24 4
gpt4 key购买 nike

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

我想用

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

我考虑过使用“事件类型标识符”(字符串或 Base.Derived 表示法),它有效但感觉不正确(例如,类型安全依赖于运行时整数,继承受限,类型转换太多。 ..)非常感谢有关代码结构和机制的建议。

最佳答案

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

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

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

关于c++ - 在 C++ 中设计具有类型安全的事件分发器、事件源、事件观察器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com