设计模式-单例模式

单例模式

保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。
必须满足三个条件:某个类只能有一个实例、它必须自行创建这个实例、它必须自行向整个系统提供这个实例。
Singleton(单例):在单例类的内部实现只生成一个实例,同时它提供
一个静态的getInstance()工厂方法,让客户可以访问它的唯一实例;为了防止
在外部对其实例化,将其构造函数设计为私有;在单例类内部定义了一个
Singleton类型的静态对象,作为外部共享的唯一实例。

单例模式的使用步骤
a) 构造函数私有化。
b) 提供一个全局的静态方法(全局访问点)来获取单例对象。
c) 在类中定义一个静态指针,指向本类的变量的静态变量指针 。

#include	<iostream>	
using namespace	std;
/*懒汉模式*/
class	Singelton
{
public:
	/*
	对外提供⼀个全局的静态⽅法
						*/
	static Singelton* getInstance() {
		/*
		懒汉式:	在调⽤全局静态⽅法,获取单例的时候,
		再进⾏创建。懒汉式的单例创建在程序的执⾏中进⾏。
											*/
		if (instance == NULL) {
			instance = new	Singelton;
		}
		m_count++;
		return	instance;
	}
	int	getCount() {
		return	m_count;
	}
private:
	/*
	构造函数私有化
						*/
	Singelton() {
		instance = NULL;
		m_count = 0;
		cout << "构造函数	singelton()	执⾏" << endl;
	}
	/*
	在类中定义⼀个静态指针,指向本类的变量的静态变量指针
						*/
	static	Singelton	*instance;
	static int	m_count;
};
/*
对静态变量的初始化,要放在类的外部,
即,放在全局位置上。
	*/
Singelton	*	Singelton::instance = NULL;
int	Singelton::m_count = 0;
/*
饿汉模式
*/
class	Singelton2 {
public:
	static	Singelton2*	getInstance() {
		m_count++;
		return	instance;
	}
	int	getCount() {
		return	m_count;
	}
private:
	Singelton2() {
		instance = NULL;
		m_count = 0;
	}
	static	Singelton2	*	instance;
	static int	m_count;
};
/*
饿汉式的不是在全局静态⽅法中创建,
⽽是不管你创不创建实例,我在声明的
时候就创建出来,
饿汉式的单例,是在编译的时候就已经创建好了。
	*/
Singelton2	*	Singelton2::instance = new	Singelton2;
int	Singelton2::m_count = 0;

未完待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值