Boost :: Signals有什么意义?

Pat*_*ick 4 c++ boost signals boost-signals boost-signals2

首先,我是编程的绝对初学者,所以不要嘲笑我太多.
我见过的唯一信号是GUI工具包,GUI工具包都带有自己的信号.那么,Boost:信号甚至可以与这些GUI工具包一起使用吗?这是个好主意吗?信号有哪些其他应用?

oco*_*odo 6

信号是一个事件消息实现,很像Smalltalk的/目标C 消息事件在各种其它(例如C#)lanugages.

您可以将它们用于各种任务,请查看Observer Pattern

你为什么要使用观察者模式?

这些好处主要是组织的,当您使用大型应用程序时,应用重用模式非常重要,这有助于保持开发团队的一致性.

当特定模式的实现变得事实上(或接近)时,它特别有用,因为这意味着新团队成员的准备时间可能会加快,不仅是因为他们之前已经使用过实施,而且因为受欢迎程度实施意味着有广泛的资源和文件可用于加速学习.

从纯代码的角度来看,所有模式都显得臃肿,但是当您开始明白软件开发中涉及的60%以上的成本都处于维护生命周期中时,获得一致性的额外代码是值得的.

另一个好处是帮助软件重用,取决于实现的风格,Observer模式可以帮助模块化和彼此分离类.我建议这也是一个组织上的好处,因为不同的团队可以更容易地构建组件,或者仅仅因为组件更容易替换.

  • @Patrick,对于观察者模式,你想知道为什么你会调用notify(),传递一些消息,因此有notify()调用foo() - 而不是直接调用foo().如果你知道你正在处理哪个类,你可能可以直接调用foo(),但想法是解耦模块.您的模块不需要知道Foo模块的细节 - 它只需要通知()一个监听器(而Foo恰好是一个监听器).通过打破这种依赖性,单元测试和维护更容易.将来通知Bar对象(或任何其他侦听器)也更容易. (2认同)