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; |
这似乎也是可行的。我认为这违反了单例模式。
我的理解正确吗?
或者单例模式的实现由程序员来完成?
您应该声明
你应该做的是:
使类的所有构造函数私有化。这样,只有类_Test::GetInstance(见下一点)才能访问构造函数。
使getInstance成为类 est的静态函数(这样它就可以访问构造函数)
将析构函数设为公共(这是默认值,因此您不必真正执行任何操作)
也就是说,您可能不应该在生产代码中使用单例,因为它们在代码中引入了使重构和松耦合变得困难的地方。
考虑改用依赖注入。