首先,我是一个编程新手,所以不要取笑我太多。
我所见过的信号唯一的用途是GUI工具包,而且GUI工具包都有自己的信号。那么,Boost:Signals甚至可以与这些GUI工具包一起使用吗?这是个好主意吗?signals还有哪些其他应用?
发布于 2010-11-25 11:48:47
Signals是一种事件消息传递实现,非常类似于Smalltalk/Objective C Messages或其他各种(例如C#)语言中的Events。
您可以将它们用于各种任务,请查看Observer Pattern
为什么要使用观察者模式?
好处在很大程度上是组织上的,当你使用大型应用程序时,应用有助于维护开发团队一致性的重用模式是很重要的。
当特定模式的实现成为事实(或接近)时,它特别有用,因为这意味着新团队成员的准备时间可能会加快,不仅是因为他们以前使用过该实现,还因为该实现的流行将意味着有广泛的资源和文档可用于加速学习。
从纯代码的角度来看,所有的模式看起来都很臃肿,但是当您开始理解软件开发中涉及的超过60%的成本是在维护生命周期中时,为了获得一致性而额外的代码是非常值得的。
另一个好处是有助于软件重用,根据实现的风格,观察者模式可以帮助实现类之间的模块化和解耦。我认为这也是组织上的好处,因为不同的团队可以更容易地构建组件,或者只是因为组件更容易更换。
发布于 2010-11-26 05:54:47
我想说的是,信号不仅仅用于(或用于) GUI工具包。它们用于希望将数据的生产者与接收者解耦的上下文中(例如,上面提到的观察者模式)。如果您将这种想法与线程相结合,就可以很容易地实现actors,这是并发任务的有趣模式(例如,Erlang和Scala使用actors )。
发布于 2010-11-25 11:54:52
一种可能的用途是实现GUI工具包。您基本上设置了连接,以便从本机系统获取消息(或恰好调用它们)以生成信号。在此基础上,路由和处理信号的代码可以(至少在某种程度上)可移植。
https://stackoverflow.com/questions/4273570
复制相似问题