Singleton
来源:互联网 发布:console windows host 编辑:程序博客网 时间:2024/05/01 14:08
今天发现singleton的设计模式还有多种不同的实现方法,以前一直这样使用:
这样使用不好之处就是得找个地方delete。
《Modern C++ Design》推荐这种方式:
这种局部static变量只有在函数被调用的第一次才被创建,随着程序的结束而结束。
另外,还有在程序加载时就创建实例的实现方式,该实现使用了静态全局变量:
这种实例成员还可以换成指针成员:
线程安全问题还是同意在设计上去避免。
static Singleton *GetInstance()
{
if (NULL == instance)
{
instance = new Singleton();
}
return instance;
}
{
if (NULL == instance)
{
instance = new Singleton();
}
return instance;
}
《Modern C++ Design》推荐这种方式:
static Singleton *GetInstance()
{
static Singleton singleton;
return &singleton
}
{
static Singleton singleton;
return &singleton
}
另外,还有在程序加载时就创建实例的实现方式,该实现使用了静态全局变量:
class Singleton
{
private:
static Singleton instance;
Singleton(void)
{
}
public:
static Singleton& GetInstance()
{
return instance;
}
};
Singleton Singleton::instance;
{
private:
static Singleton instance;
Singleton(void)
{
}
public:
static Singleton& GetInstance()
{
return instance;
}
};
Singleton Singleton::instance;
class Singleton
{
private:
static Singleton* instance; //申明
Singleton(void)
{
instance = this;
}
public:
static Singleton* GetInstance()
{
return instance;
}
};
Singleton::instance = NULL; //定义
//全局
Singleton g_Instance;
{
private:
static Singleton* instance; //申明
Singleton(void)
{
instance = this;
}
public:
static Singleton* GetInstance()
{
return instance;
}
};
Singleton::instance = NULL; //定义
//全局
Singleton g_Instance;
- Singleton
- Singleton
- singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- 拨号、断网、枚举连接名称,判断是否在线、连接方式。
- 非常有用的操作INTERNET的API函数
- 花开了
- OnClientClick的妙用!
- va_list、va_start、va_arg、va_end宏的使用(转)
- Singleton
- 关于split中字符串的问题
- C#自动拨号调用类
- Windows程序设计---多线程1
- Windows程序设计---多线程2
- 关于C#的CS1612错误
- C语言命名规则
- Windows程序程序设计---线程同步1
- 文件/文件夹同步机制(类似公文包)