设计模式之单例模式

1.单例模式

       单例模式,又叫单体模式,是设计模式中很重要的一个模式。单例模式的实现很简单,就提供一个只有一个实例的类,从而让所有访问此类的,只能操作单一的实体,而不是另外的实体。

      单例模式,在设计模式中很重要。因为,这种模式,可以提供一种唯一的访问方式,这种方式,是很多程序中需要的。

2.单例模式的作用和实现

      单例的模式的作用:

1)对外提供一个全局的访问点;

2)保证只能有一个可访问的实体;

3)让本程序中,所有的操作只是对一个实体的操作。

       单例模式的实现:

1)让整个类的构造函数私有,使外部不可以构造实体;

2)一个属于全体类的静态变量,判断整个类是否实例化;

3)提供给外部一个实例化的接口,可以获得实例;外部没有实例化时,调用构造函数构造;但如果已经构造,只能提供已经构造的实例。

3.单例模式的不同语言特点和注意

      在不同语言中和不同实现中,单例模式需要注意一些特点:

1)在C++中,对单例仅仅保证构造函数的私有,可能还不够;应该把拷贝构造和等号操作符也设置为私有;

2)在JS中,单例是最常见的模式;

3)多线程(多任务)情况下,如果还是原来的单例模式,可能会造成不是单例;一般会采用饿汉式方式(类构造时生成)或者懒汉式(类调用时生成,但加上锁保证同步)。

4.单例模式样例

单体模式的懒汉式实现如下:

https://github.com/diziqian/DesignPattern/tree/master/SingletonPattern/LazySingletonPattern

单体模式饿汉式实现如下:

https://github.com/diziqian/DesignPattern/tree/master/SingletonPattern/HungrySingletonPattern

PS:也不得不佩服下JAVA,任务同步只需要一个关键字就行,而C++的同步,必须加上各种方法,幸亏C++11提供了比较便捷的同步的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值