singleton是一个十分常用的模式,也十分简单.不过到现在才知道这种模式叫singleton模式.
现在把singleton模式做一下记录.
模式意图:
保证一个类仅有一个实例,并提供一个访问它的全局访问点.
问题:
几个不同的客户对象需要引用一个对象.而且希望确保这种类型的对象数目不超过1个
实现原理:
1.添加一个类的私有的静态成员变量,引用所需的对象.
2.添加一个公共的静态方法,它在成员变量的值为null时实例化这个类,然后返回成员变量的值.
3.将构造函数的状态设置为保护或私有,从而防止任何人实例化这个类,绕过静态构造函数的机制
Singleton模式的C++片段
class SingletonTest{
private static Singleton s_instance;
private Singleton(){}
public static SingletonTest getInstance(){
if(NULL == s_instance){
s_instance = new SingletonTest;
return s_instance;
}
}
}
在多线程模式下,singleton模式不能总是正常工作.
Double-cheched Locking是singletonr 的一种变体.仅适用于多线程模式.
此模式的特点:
1.在创建对象之前,添加一次检查,避免不必要的锁定
2.支持多线程环境
class DCL{
private static DCL s_instance;
private DCL(){}
public static DCL getInstance(){
if(NULL == s_instance){
synchronized(this){
if(null == s_instance){
s_instance = new DCL();
}
}
}
}
private synchronized static void doSync()
{
if(NULL ==s_instance)s_instance = new DCL();
}
}

兄弟是搞c++的是么
正想多学点东西呢
我是做java web方面的
呵呵!我做过C++,两年.目前主要做lamp开发