意图:主要是为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。

适用性:

当一个类不知道它所必须创建的对象的类的时候。

当一个类希望由它的子类来指定它所创建的对象的时候。

结构图:

SINGLETON(单件)——对象创建型模式 

实现:

1)保证一个唯一的实例

Singleton模式,用C++实现的一个很简单的例子。一台计算机运行中的操作系统理解为类COSSingleton的唯一实例,在系统启动时,只有一个操作系统被创建。做到这一点只需要在COSSingleton类中声明一个类操作(即一个静态成员函数),由它保证只有一个实例被创建。

class COSSingleton
{
public:
    
static COSSingleton* Instance();
    
virtual void ShowOSVersion();
protected:
    COSSingleton(
void);
private:
    
static COSSingleton* _instance;
};

 

它包含了一个指向它的唯一实例的指针。注意构造函数的访问控制为protected,这是为了扩展性(子类继承),而又不打破Singleton模式的意图不能创建多个实例。 相应的实现如下:

COSSingleton* COSSingleton::_instance = NULL;

void COSSingleton::ShowOSVersion()
{
    std::cout
<<"Unknow";
}

COSSingleton
* COSSingleton::Instance()
{
    
if (_instance==NULL)
    {
        _instance 
= new COSSingleton();
    }
    
return _instance;
}

相关文章:

  • 2022-12-23
  • 2021-09-22
  • 2021-05-23
  • 2021-07-27
  • 2022-01-21
  • 2022-02-06
  • 2021-07-17
  • 2022-01-03
猜你喜欢
  • 2021-06-06
  • 2022-12-23
  • 2021-12-13
  • 2021-10-05
  • 2022-12-23
  • 2022-02-18
相关资源
相似解决方案