首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插件系统设计核心组件访问:通用实践?

插件系统设计核心组件访问:通用实践?
EN

Software Engineering用户
提问于 2021-12-16 08:10:27
回答 1查看 127关注 0票数 0

我想知道如何在C++/Qt中设计一个好的插件架构。当涉及到核心组件时,我主要关注的是依赖注入与全局注入。插件应该可以访问几个核心功能,如注册套接字监听器、修改托盘菜单、访问主窗口、启动/重新启动应用程序、访问扩展池等等。

我现在想知道的是,类PluginLoader是否应该保存所有这些东西,并将它们插入一个方法initialize(…………)中,其中包含一个巨大的参数列表,或者全局值在这种情况下是否“正常”,因为这些核心组件本质上都是单元素。

EN

回答 1

Software Engineering用户

发布于 2021-12-16 10:02:44

您提供给插件的任何东西都会成为应用程序的公共API的一部分,如果不付出很大的代价,就不可能更改。考虑到这一点,您应该尽量保持您的公共API尽可能小,这样您就不会在对核心功能进行更改时限制自己。

从这个角度来看,如果有任何方法可以避免的话,就不应该在公共API中公开(名称)全局变量。

另一方面,一个巨大的initialize方法将所有可能的依赖注入到所有插件中,无论插件是否需要它们,也是不可取的,也不是未来的证据。

对于真正的单例插件依赖项,可以使用Singleton设计模式。它几乎与全局变量相同,但它清楚地表达了这样的意图:必须只有一个实例(不管会考虑什么需求更改)。

对于不是单例的插件依赖项,我将向插件提供一个“依赖解析器”类/实例,从而使它们能够请求所需的依赖项。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/435363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档