浅谈C 设计模式之单例模式
- 格式:pdf
- 大小:124.68 KB
- 文档页数:2
浅谈C++设计模式之单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
通常我们可以让一个全局变量使得一个对象被访问,但它不能防止客户实例化多个对象,一个最好的办法就是让类自身负责保护它的唯一实例,这个类可以保证没有其它实例可以被创建,并且它可以提供一个访问该实例的方法。
单例模式因为Singleton类封装它的唯一实例,这样它可以严格控制客户怎样访问它以及何时访问它,简单地说就是对唯一实例的受控访问。
实现原理:将构造函数私有化,只提供一个静态方法来创建一个对象。
(1)将构造函数设置成private;
(2)声明一个静态的字段,初始化一个实例,返回Singleton对象;
(3)用静态方法或静态属性,返回那个唯一的实例
当然,在对象用多线程时,可能会造成创建多个实例,可以给创建对象的过程加锁。
Singleton:定义一个Instance操作
1.class Singleton{
2.public:
3.static Singleton*Instance();
4.protected:
5.Singleton(){}
6.Singleton(const Singleton&instance){}
7.Singleton&operator=(const Singleton&instance){}
8.private:
9.static Singleton*instance;
10.};
11.Singleton*Singleton::Instance(){
12.if(instance==0)
13.instance=new Singleton;
14.return instance;
15.}
16.Singleton*Singleton::instance=0;
其实,单例模式中最关键的就是把public的构造函数私有化。这样就把构造对象的实例化的权利交给了类本身,让Singleton来控制类的实例化。当然除了构造函数之外,还需要把类的控制复制函数(拷贝构造函数,赋值运算)私有化,因为客户端没有构造的权利,所以也就没有使用控制复制函数的权利。
【编辑推荐】
1.爱上谷歌文档Docs的十大理由
2.我是如何击败Java自带排序算法的
3.8个强大的基于Bootstrap的CSS框架
4.Java延时实例分析:Lock vs Synchronized
5.借助AOP为Java Web应用记录性能数据
6.强大的HTML5幻灯片系统:H5Slides
7.风口上的政府大数据需要消除“大误区”