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