我想知道如何设计一个系统,它可以提供一个可靠的框架来处理信号以及信号/s 和方法/s 之间的连接,而无需编写一个非常令人不快的循环,一遍又一遍地迭代一些语句 fork 应用程序的流程。
换句话说,我想知道 Qt 或类似的信号槽机制背后的理论。
我命名 Qt 没有特别的原因,它可能只是最常用和经过良好测试的库之一,因此它是 C++ 世界中的引用,但任何关于这种机制设计的想法都会很好。
谢谢。
最佳答案
在高层次上,Qt 的信号/槽和 boost 的信号库的工作方式类似于 Observer Pattern (他们只是避免需要 Observer 基类)。
每个“信号”都会跟踪观察它的“插槽”,然后在发出信号时遍历所有“插槽”。
至于具体如何实现,C++和维基百科文章中的Java代码非常相似。如果您想避免为所有观察者使用一个接口(interface),boost 使用模板,而 Qt 使用宏和一个特殊的预编译器(称为 moc)。
关于c++ - 一个事件系统——就像 Qt 中的信号/槽,没有 fork ——C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13813808/