我想将对象的参数和句柄存储在一个地方(C++),以便该项目中的每个其他对象都可以获得这些信息,并且只需要在一个地方进行更改。例如,我有一些字符串和一个(单个!)处理外部设备的对象。现在,整个项目中的不同对象应该能够通过使用控制对象的相同实例来处理外部设备。
实现这一点的最佳方法是什么?有图案吗?我是否应该有一个静态类来初始化所有这些对象和变量,并在被要求时提供对对象的引用?或者我是否应该一直交出对这些对象的引用——我目前正在做什么并且真的不喜欢。
谢谢!
我想将对象的参数和句柄存储在一个地方(C++),以便该项目中的每个其他对象都可以获得这些信息,并且只需要在一个地方进行更改。例如,我有一些字符串和一个(单个!)处理外部设备的对象。现在,整个项目中的不同对象应该能够通过使用控制对象的相同实例来处理外部设备。
实现这一点的最佳方法是什么?有图案吗?我是否应该有一个静态类来初始化所有这些对象和变量,并在被要求时提供对对象的引用?或者我是否应该一直交出对这些对象的引用——我目前正在做什么并且真的不喜欢。
谢谢!
正如https://stackoverflow.com/users/2493903/undercover已经说过的,单例是你所需要的。
例子:
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,就像有人说的那样,但应该添加一些补充 IMO。
使用 Singleton 应该在设计中明确定义以避免项目混乱,否则它会成为具有几乎所有缺点的全局变量(几乎,因为它更容易使 Singleton 线程安全;))
我个人更喜欢依赖注入,因为当有人必须做的工作比
Foo::getInstance().doSomething();
那么他更可能会考虑是否真的需要在这里使用这个类。