如何防止程序违反单例模式。

23 浏览
0 Comments

如何防止程序违反单例模式。

此问题已经在以下处有答案

C++ 单例设计模式

我正在尝试在 c++ 中实现单例模式。

static class_test* getinstance()
{
   static class_test single_obj;
   return &single_obj;
}

如果我想创建单例对象,我会使用这种方法。

class_test *c = class_test :: getinstance();

这样确保了单个对象始终保持。

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

class_test test;

这似乎也有效。我认为这是单例模式的违规行为。

我的理解是正确的吗?

还是单例模式的实现留给程序员来掌握?

admin 更改状态以发布 2023年5月24日
0
0 Comments

以下是你应该做的事情:

  1. 将class_test类的所有构造函数设为私有。这样,只有class_test::getinstance(见下一点)才能访问构造函数。

  2. 将getinstance设为class_test的静态函数(这样它就可以访问构造函数)

  3. 将析构函数设为公共函数(这是默认的,所以你实际上不需要做任何事情)

话虽如此,你在生产代码中可能不应该使用单例模式,因为它们会引入使重构和解耦变得困难的代码块。

考虑使用依赖注入。

0
0 Comments

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

0