0、核心要素
// 构造、析构函数私有化(一个进程只允许一个对象存在)
// 对象私有化、静态化(因为接口静态函数)
// 对象调用接口静态化(因为静态函数脱离了类对象,可以直接调用)
一、懒汉
唯一的对象在使用时才进行初始化。存在多线程问题。文章来源:https://www.toymoban.com/news/detail-653600.html
#include <iostream>
using namespace std;
class singleMode {
public:
static singleMode* getInstance() {
if (obj==nullptr) {
obj = new singleMode();
}
return obj;
}
void printMsg() {
cout << "print success." << endl;
}
private:
static singleMode* obj;
singleMode() {
cout << "instance create." << endl;
}
~singleMode() {
cout << "instance release." << endl;
}
};
singleMode* singleMode::obj = nullptr;
// singleMode* singleMode::obj = new singleMode();
int main()
{
{
singleMode::getInstance()->printMsg();
}
return 0;
}
二、饿汉
唯一的对象在定义时就完成初始化。文章来源地址https://www.toymoban.com/news/detail-653600.html
#include <iostream>
using namespace std;
class singleMode {
public:
static singleMode* getInstance() {
/* if (obj==nullptr) {
obj = new singleMode();
}
*/
return obj;
}
void printMsg() {
cout << "print success." << endl;
}
private:
static singleMode* obj;
singleMode() {
cout << "instance create." << endl;
}
~singleMode() {
cout << "instance release." << endl;
}
};
// singleMode* singleMode::obj = nullptr;
singleMode* singleMode::obj = new singleMode();
int main()
{
{
singleMode::getInstance()->printMsg();
}
return 0;
}
到了这里,关于设计模式——经典单例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!