首先,我是一个编程的绝对初学者,所以不要太嘲笑我。
我所见过信号用于GUI工具包,而GUI工具包都带有自己的信号。那么,Boost:Signals能否与这些GUI工具包一起使用呢?这是个好主意吗?信号还有哪些其他应用?
首先,我是一个编程的绝对初学者,所以不要太嘲笑我。
我所见过信号用于GUI工具包,而GUI工具包都带有自己的信号。那么,Boost:Signals能否与这些GUI工具包一起使用呢?这是个好主意吗?信号还有哪些其他应用?
Signals是一种事件消息实现,类似于Smalltalk/Objective C中的Messages或其他各种语言(例如C#)中的Events。
您可以将它们用于各种任务,请查看Observer Pattern。
好处主要在于组织上,在处理大型应用程序时,应用可重用的模式有助于维护开发团队的协调性。
当特定模式的实现成为事实标准(或接近),它尤其有用,因为这意味着新团队成员的引导时间可能会加快,不仅是因为他们以前使用过该实现,而且因为该实现的流行意味着有广泛的资源和文档可用于加速学习。
从纯代码角度来看,所有模式都显得臃肿,但是当您开始理解软件开发涉及的成本中高达60%是在维护生命周期中时,额外的代码值得获得协调性。
另一个好处是帮助软件重用,根据实现的方式,观察者模式可以协助将类模块化和解耦。我建议这也是一种组织上的好处,因为不同的团队可以更容易地构建组件,或者仅仅因为组件更容易被替换。仅供参考,信号不仅用于GUI工具包中。它们用于想要将数据的生成者与接收者解耦的情况(例如上面提到的观察者模式)。如果将该思想与线程混合使用,则可以轻松实现演员,这是一种有趣的并发任务模式(例如Erlang和Scala使用演员)。
一个可能的用途是在实现GUI工具包时使用。你基本上需要设置连线,以便从原生系统获取消息(或称之为任何内容)以产生信号。从那里开始,路由和处理信号的代码可以(至少有些)可移植。