《设计模式》:单例模式

如何让一个类无法定义对象

接口类抽象类无法定义对象

class A	//接口类
{
	public:
		virtual void AA() = 0;
};
如何定义一个整形变量,让他只能是10的倍数

如果想要规定别人必须怎么做,就要使用接口

class CNum
{
	private:
		int num;
	CNum()
	{
		num = 0;
	}
	void Set(int n)
	{
		num = n*10;
		cout << "附加应用" << endl;	//唯一操作num的方式,如果想用num,那在这个函数内写的其他内容都被捆绑执行
	}
};

封装过程
1:把int num隐藏起来不让别人用。
2:提供一个调用int num的接口并且这个接口的方法是固定的。

单例模式
1.先不让一个类定义对象
2.再提供一个接口,产生一个对象

A *pA = NULL;
class A
{
	private:
		A(){}		//第一步:把构造函数设置为私有方法
	public:
		static A *GetObject()	//静态函数无需对象即可调用
		{
			if(pA == NULL)
			{
				pA = new A;		//第二步:如果没有对象,就创建一个对象,如果有,就不定义了。
			}
			return pA;
		} 
};

int main()
{
	A *pA = A::GetObject();
	return 0;
}

为什么要用单例模式

单例模式应用场景

打印机的任务队列
任务管理器

实现
class singleton
{
	public:
			static singleton *getInstance()
			{
				if(pSingle == NULL)
				{
					pSingle = new singleton;
					return pSingle;
				}
				 
			}
			static void DestroyInstance()
			{
				if(pSingle)
				{
					delete pSingle;
					pSingle = NULL;
				}
			
			}
	private:
		singleton(){}
		~singleton(){}
		singleton(const singleton&)
		static singleton *pSingle;	//初始化  1  pSingle = NULL(懒汉) pSingle = getInstance()(饿汉)
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值