sigslot简介

在开发一个复杂工程的时候,经常会遇到这样一个问题:整个系统被分成数个模块,每个模块提供有限的功能,由上层调用组成整个系统,为了保证每个模块的独立性,我们经常会尽量限制模块与模块之间的直接联系,比如每个模块只提供有限的API或者COM接口,而内部实现则完全封闭起来。 但有的时候会出一些设计要求,必须能够使模块之间能够直接通讯,而这两个模块往往处于不同的逻辑层次,之间相差甚远,如何设计它们之间的调用模式使整个工程维持整洁变得非常困难,比如模块直接直接包含对方的头文件会引起编译变得复杂,提供api或者接口会引起版本危机等问题。 sigslot的出现为我们提供了一种解决问题的思想,它用“信号”的概念实现不同模块之间的传输问题,sigslot本身类似于一条通讯电缆,两端提供发送器和接收器,只要把两个模块用这条电缆连接起来就可以实现接口调用,而sigslot本身只是一个轻量级的作品,整个库只有一个.h文件,所以无论处于何种层次的库,都可以非常方便的包含它。 举个例子,我们设计一个发送消息的类,这个类负责在某种时刻向外界发出求救信号:

 

另外一个类则负责接收求助信号:

 

在让我们在主逻辑中把这两个类连接起来:

 

只要在任何时候调用 sender.Panic()函数,就会把求救信号发送给接收者,而且这两个发送和接收端的模块都可以独立编译,不会出现版本问题。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值