找回密码
 立即注册
收起左侧

请教关于插件的概念

0
回复
69
查看
[复制链接]
累计签到:27 天
连续签到:1 天
来源: 2019-11-8 09:59:29 显示全部楼层 |阅读模式
1Qter豆
现在应用程序的模块比较多,了解到插件方式对应用程序的模块化管理比较方便。

看了一些例程,发现应用程序对插件的加载和通信都是通过类似“loadPlugin()”这样的方法实现的,这里的前提是:
1. 应用程序知道有这么个插件(扫描该插件并加载,然后连接信号槽)
2. 插件知道应用程序的相关接口(开发该插件的过程中知道应用程序的相关信号槽)
问题一:感觉这种方式跟普通的模块化编程(非插件化)性质差不多,请问一下插件方式有什么优势呢?

假如应用程序和插件一起发布了,在运行一段时间后发现需要增加一些功能,这时候再去开发对应的插件(新插件)的话,可能会有以下的情况:
1. 应用程序本省并没有新插件所需的信号
2. 把新插件的dll文件放在对应文件夹后,应用程序虽然扫描到了,但是不会做任何处理(如以下代码)
问题二:在这种情况下,是不是除了加载新插件外,应用程序也要一起修改呢?(修改loadPlugin()以实现对新插件的支持)

  1.     pluginsDir.cd("plugins");
  2.     foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
  3.             QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
  4.             QObject *plugin = pluginLoader.instance();
  5.             if (plugin) {
  6.                     echoInterface = qobject_cast<EchoInterface *>(plugin);
  7.                     if (echoInterface)
  8.                         return true;
  9.             }
  10.     }
复制代码
注:EchoInterfac是之前开发好的插件,如果新增插件(如HelloWorld)的话,这段代码是不是要添加对新插件的识别?


阿里云
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册