c++ - 避免插件中的单例在所有实例之间共享

标签 c++ singleton

我正在构建一个将在主机中使用的插件。这个插件使用单例来提供我想在任何地方轻松访问的服务。当我多次实例化同一个插件时,问题就来了,同一个(静态)单例,特定于可运行的,将在所有实例化的插件中分片。一般来说,有没有一种方法可以缩小单例(c++)的范围? 由于每个插件本身就是一个实例,我显然可以将插件的根类传递给它的所有子类,但我希望尽可能保持相同的全局单例设计。

最佳答案

有单例的理由吗?基本原理是当您需要强制只有一个,并且需要提供单一访问点时。如果这些不是真正的要求,那么只需创建一个并将其传递到需要的地方。

我会逐渐摆脱单例。

单例做的多还是少?

您可能需要将其分成几部分。

如果它做的不多,就把它传到需要的地方,去掉它的单例性。

如果它提供大量服务,请为每个服务创建接口(interface)并将它们传递到需要它们的地方。您的设计将得到改进,变得更易于测试和更容易理解。

起初,接口(interface)的实现可以委托(delegate)给原来的单例,但你最终想让它们自包含。

关于c++ - 避免插件中的单例在所有实例之间共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14090141/

相关文章:

C++模板问题

c++ - 修复了 g++ 4.9.1 奇怪的 "%a"格式行为?

python - 两个呈现的类之间有什么区别?他们的工作方式不同吗?

android - 如何实现 LiveData 单例

ios - 我应该将 appDelegate 用于所有单例样式的应用程序级代码吗?

c++ - 获取四边形 OpenGL

C++ 通过 UDP 套接字发送结构

c++ - 如何使用 boost::format 对变量中包含小数位数的数字进行零填充?

flutter - Flutter中的Singleton提供运行时错误 “Unhandled Exception: Reading static variable ' _instance @ 54532459 4' during its initialization”

c++ - 与单例互包含