关于c ++:如何防止程序违反单例模式

how to prevent program from violation of singleton pattern

本问题已经有最佳答案,请猛点这里访问。

我正在尝试实现C++中的单模式。

1
2
3
4
5
static class_test* getinstance()
{
   static class_test single_obj;
   return &single_obj;
}

如果我想创建singleton对象,我将使用这个方法。

1
class_test *c = class_test :: getinstance();

因此,可以确保每次维护单个对象。

但在同一个程序中,我使用了以下语句

1
class_test test;

这似乎也是可行的。我认为这违反了单例模式。

我的理解正确吗?

或者单例模式的实现由程序员来完成?


您应该声明class_test::class_test()是私有的,以防止用户实例化新对象。


你应该做的是:

  • 使类的所有构造函数私有化。这样,只有类_Test::GetInstance(见下一点)才能访问构造函数。

  • 使getInstance成为类 est的静态函数(这样它就可以访问构造函数)

  • 将析构函数设为公共(这是默认值,因此您不必真正执行任何操作)

  • 也就是说,您可能不应该在生产代码中使用单例,因为它们在代码中引入了使重构和松耦合变得困难的地方。

    考虑改用依赖注入。