单例模式(Singleton)-设计模式(五)

单例模式我觉得就是唯一性,个人认为 Singleton 模式是设计模式中最为简单、最为常见、最容易实现,也是最应该熟悉和掌握的模式。
作用:保证一个类仅有一个实例, 并提供一个访问它的全局访问点。
解析:
Singleton 模式其实是对全局静态变量的一个取代策略,上面提到的Singleton 模式的两个作用在 C++中是通过如下的机制实现的:
1)仅有一个实例,提供一个类的静态成员变量,大家知道类的静态成员变量对于一个类的所有对象而言是惟一的
2)提供一个访问它的全局访问点,也就是提供对应的访问这个静态成员变量的静态成员函数,对类的所有对象而言也是惟一的.在 C++中, 可以直接使用类域进行访问而不必初始化一个类的对象.
Singleton 模式需要说明的是,Singleton 不可以被实例化,因此我们将其构造函数声明为 protected或者直接声明为 private。
如果一个项目中用到的singleton模式较多的话,一般会定义一个模板:

Template <typename T>
class Singleon
{
    //类的声明和实现
}
//需要用到Singleton的类
class Testpublic Singleton<Test>
{
    //类的声明
}

个人觉得Singleton模式的实现很简单,看个简单的实现吧。

 #include<iostream>

using namespace std;

class Singleton
{
    public:
        static Singleton* Instance()
        {
            if(_instance == 0)
            {
                _instance = new Singleton();
            }
            return _instance;
        }
    protected:
        Singleton()
        { 
            cout<<"Singleton..."<<endl; 
        }
    private:
        //静态成员变量,提供全局唯一的一个实例
        static Singleton* _instance;
};
//类的静态成员变量要在类体外进行定义
Singleton* Singleton::_instance = 0;
int main()
{
    Singleton* sgn = Singleton::Instance();
    return 0;
}

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值