[设计模式笔记]一. 创建型模式--6.Singleton模式(单体模式)(一)

创建型模式 Singleton模式(单体模式)


一. 意图


保证一个类仅有一个实例并提供一个访问它的全局访问点.


二. 适用性


1. 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时.

2. 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时.


三. 模式结构


图1



四. 角色说明


Singleton: 提供一个静态方法返回对象指针.


五. 代码


class Singleton
{
public:
	static Singleton* Instance();
protected:
	Singleton();
privete:
	static Singleton* m_pInstance;	
};


Singleton* Singleton::m_pInstance = 0; 
Singleton* Singleton::Instance()
{
	if(m_pInstance)
	{
		m_pInstance = new Singleton;
	}
	return m_pInstance;
}

Singleton::Singleton()
{}


六. 说明


对唯一实例的受控访问..

2. 不一定是唯一实例你也可以设计成只允许两个实例三个实例等等.


我的理解


7.1 很简单就是控制好整个空间中唯一的对象实例通过私有的构造方法和静态的创建实例实现你使用全局变量办法也是可行的但是容易出错.

7.2 在一个程序中控制某一个硬件通常指能创建该硬件的一个实例此时可以使用Singleton模式

7.3 通常对创建的实例还需要一个删除函数这里也可以和Instance函数一样定义为静态类函数例如ReInstance.


相关模式


8.1 很多模式可以使用Singleton模式实现参见Abstract Factory, BuilderPrototype, 模式中的某些类可以使用其他模式来创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值