zoukankan      html  css  js  c++  java
  • 【设计模式】——单例模式

    单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能访问你实例化多个对象。一个最好的办法,让类自身负责保存它的唯一的实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。

    #include <iostream>
    
    using namespace std;
    //Singleton类,定义一个GetInstance操作,允许客户访问它的唯一实例。GetInstance是一个静态方法,主要负责创建自己的唯一实例
    class Singleton
    {
    private:
        //构造方法让其private,这就堵死了外界利用new创建此类实例的可能
        Singleton(){}
        static Singleton* instance;
    public:
        //此方法是获得本类实例的唯一全局访问点
        static Singleton *GetInstance();
    };
    Singleton* Singleton::instance=NULL;
    Singleton* Singleton::GetInstance()
    {
        if(instance==NULL)
            instance=new Singleton();
        return instance;
    }
    int main()
    {
        Singleton *t1=Singleton::GetInstance();
        Singleton *t2=Singleton::GetInstance();
        if(t1==t2)
            cout << "两个对象是相同的实例。" << endl;
        return 0;
    }

    单例模式因为Singleton类封装它的唯一实例,这样它可以严格控制客户怎样访问以及何时访问它。简单地说就是唯一实例的受控访问。

  • 相关阅读:
    FocusScope学习三: 对FocusScope 的探究与总结
    FocusScope学习二: 很好的理解FocusScope的工作原理
    不同XML之间节点的拷贝
    计算几何DotVector
    计算几何Graham法凸包
    计算几何UVa10652
    线性筛三合一,强大O(n)
    计算几何AngRadVector
    线性筛euler,强大O(n)
    矩阵bzoj1898
  • 原文地址:https://www.cnblogs.com/awy-blog/p/3833273.html
Copyright © 2011-2022 走看看