全局配置和类管理

Global configuration and class management

本文关键字:管理 配置 全局      更新时间:2023-10-16

我想在一个地方(c++)存储对象的参数和句柄,以便这个项目中的每个其他对象都可以获得这些信息,它们只需要在一个地方更改。例如,我有一些字符串和一个(单个!)对象来处理外部设备。现在,整个项目中的不同对象应该能够通过使用控制对象的相同实例来处理外部设备。

实现这一点的最佳方法是什么?有什么规律吗?我应该有一个静态类来初始化所有这些对象和变量,并在需要时提供对象的引用吗?或者我应该一直把这些对象的引用交给别人——我现在做的事情,我真的不喜欢。

谢谢!

正如https://stackoverflow.com/users/2493903/undercover已经说过的,singleton是你所需要的。

的例子:

class Foobar
{
public:
    static Foobar & singleton()
    {
        static Foobar foo;
        return foo;
    }
private:
    Foobar();
    Foobar( const Foobar & ); // don't implement
    Foobar & operator=( const Foobar & ); // don't implement
};

你应该考虑Singleton,就像它说的那样,但是我认为应该添加一些补充。

使用Singleton应该在设计中有良好的定义,以避免在项目中出现混乱,否则它将成为一个具有几乎所有缺点的全局变量(几乎,因为它更容易使Singleton线程安全;))

我个人更喜欢依赖注入,因为当某人必须做比

更多的工作时
Foo::getInstance().doSomething();

那么他将更有可能考虑他是否真的需要在这里使用这个类