Singleton

来源:互联网 发布:excel数据丢失怎么恢复 编辑:程序博客网 时间:2024/05/01 11:58
CSingleton * CSingleton ::m_pRemainder = NULL;

CSingleton 
* CSingleton ::Instance(void)
{
    
if (m_pSingleton == NULL){
        m_pSingleton
=  new CSingleton ();
    }

    
return m_pSingleton;
}
 
class CSingleton
{

public:
    CSingleton();
    
virtual ~CSingleton();

    
static CSingleton* Instance(void);
private:
    
/*単一のインスタンス*/
    
static CSingleton* m_pSingleton;

}
;
意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
机:一些,只有一个例是很重要的,例如统资源的控制。保一个只有一个例并且例易于被访问,有一个好方法来实现,就是让类自身负责保存它的唯一例。可以保没有其他例可以被(截取建新象的),并且它可以提供一个访问该实例的方法,就是Singleton模式
class Singleton {
public
    
static Singleton* Instance() ; 
protected
    Singleton() 
{} 
private
    
static Singleton *_instance ; 
}
 ;
Singleton
* Singleton::_instance = 0 ; 
Singleton
* Singleton::Instance() {
    
if (_instance == 0){
        _instance 
= new Singleton; //lazy initialization 
    }
 
    
return _instance ; 
}
 *   唯一例的受控访问

              Singleton封装它的唯一例,所以它可以格的控制客以及何时访问它。

  *       缩小名空间

              Singleton模式是对全局变量的一种改进。它避免了那些存储唯一实例的全局变量污染名空间。
 
*       允许对操作和表示的精化
              Singleton类可以有子类,而且用这个扩展类的实例来配置一个应用是很容易的。你可以用你所需要的类的实例在运行时刻配置应用。
 
*       允许可变数目的实例
              这个模式使得你易于改变你的想法,并允许Singleton类的多个实例。此外,你可以用相同的方法来控制应用所使用的实例的数目。只有允许访问Singleton实例的操作需要改变。
 
*       比类操作更灵活
              另一种封装单件功能的方式是使用类操作(即C++中的静态成员函数或者是Smalltalk中的类方法)。但这两种语言技术都难以改变设计以允许一个类有多个实例。此外,C++中的静态成员函数不是虚函数,因此子类不能多态的重定义它们。

 

原创粉丝点击