Signals 总结
以下情形时使用 Signals :
你需要健壮的回调时
事件具有多个处理者时
signal
与插槽之间的连接需要在运行时可配置时
Boost.Signals 取代旧有风格的回调现在已经是很清楚了,这个库是当前可用的、最好的 signals/slots 实现之一。这个库所代表的设计模式非常著名,并且已经被研究了很长一段时间,所以这个领域已经非常成熟。一些编程语言已经在语言中直接实现了这种机制,如 .NET 中的delegates 和 events。在C++中,这个问题被库优美地解决了。Signals 和 slots 用于把事件的触发器机制从处理它的代码中分离出去。这种分离解耦了子系统,使它们更易于理解。它还解决了当重要事件发生时更新多个关注方的问题。在典型的程序或库中,有很多地方需要用到 signals 和 slots 。无论你是在编写一个GUI框架,或是一个发电站的入侵检测系统,Signals 都可以满足你的需要。它的用法很容易学习,它还提供了复杂任务所需的高级功能。例如,定制的 Combiners 可用于编写特定领域的事件处理机制。
Boost.Signals 由 Douglas Gregor 编写(他还编写了 Boost.Function)。这是一个伟大的库;谢谢你,Doug!