设计模式:单例模式

                        设计模式:单例模式

前言

    单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。(百度百科)

正文

我们简单的实现一个单例模式,先看代码,后分析:

单例示例代码

#include <iostream>
using namespace std;
//单例模式
class Single
{
private:
	static Single *instance;
	//构造函数私有化
	Single() = default;
public:
	//提供一静态方法获取类的实例
	static Single* getInstance()
	{
		if (instance == nullptr)
			instance = new Single;
		return instance;
	}
	//其它数据成员和函数成员省略
};
Single* Single::instance = nullptr;
//class D 公有继承 Single
class D :public Single
{

};
int main(void)
{
	cout << "******单例模式***by David***" << endl;
	Single *p1 = Single::getInstance();
	Single *p2 = Single::getInstance();
	cout << (void*)p1 << ends << (void*)p2 << endl;
	delete p1;
	Single *p3 = D::getInstance();
	cout << (void*)p3 << endl;
	cin.get();
	return 0;
}
运行



从运行结果看,p1、p2、p3都指向了同一个对象。p1、p2相同说明单例的存在,而p3则表明了整个继承体系中也只有一份单例。


单例的设计原理

  1. 为了不让用户自行创建类对象,需要把构造函数设置成私有的或受保护的。同时为了不让子类中使用构造函数,必须把构造函数私有化。
  2. 设计一个静态的类类型指针,因为静态成员在整个继承体系中只有一份。
  3. 提供一静态公共方法,这是对外获取单例的接口。

在cocos2dx中,就有单例的使用,比如:我们常用Director::getInstance();获取控制整个游戏的导演单例。



所有内容的目录


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值