QT插件学习系列(三) 插件间通信
1、 概述
前两篇文章学完我们可以从0开始写一个 QT 插件了,也有自己的简易版插件框架了。但是例子中只给出了单个插件的加载与调用,我们实现插件化的目的是为了扩展性,实际项目中会存在插件A,插件B,插件C。而这些插件之间怎么通信 ? 或者说怎么建立一种良好的通信结构,这既是一项必不可少的工作,更是完善我们插件框架的重要里程碑。
在我们实现通信机制的时候,要考虑下面几点(不止在这儿,在任何时候都要这么做):
1、 耦合性要低。
2、 代码量要少。
3、 扩展性要强。
4、 封装、继承、多态。
我们要尽量符合面向对象原则,面向对象中,再面向接口编程,而不是面向实现。
通信包括插件和主程序之间的通信,也包括插件和插件之间的通信,首先,在插件里面是获取不到主程序的内容的(试想键盘能知道 windows 内核的东西吗,它们之间是主从设备的关系,即插件管理器和插件也是主从关系),其次插件 A 也不知道插件 B 的存在(键盘不知道鼠标的存在),即无依赖关系的插件之间 0 耦合。
下图展示了我们整个插件的通信机制:
本想建立一个单例的消息中转站 Router,用于转发消息的,但是一想算了,既然是个 Demo 就简单点,直接用 PluginManager 类吧。