单例模式

单例模式:SingleTon,顾名思义是单个对象的模式,即一个类中只能实例化一个对象。

我们可以这样做:
1.屏蔽起来对象生成接口,即:
private:
构造函数
这样就实现了只能本类类中访问,不能类外访问并生成对象
2.类中生成唯一的对象
提供一个接口返回出去供外部使用

下面来具体说说这个接口:暂且将这个接口叫做函数getInstance()
1.先说函数getInstance的范围,它的范围应该是全局共享的,最主要的是不依赖对象调用,所以我们才将函数设置成static
2.再来看看它的返回值类型,我们要知道函数的目的就是将这个对象返回出去,所以说现在有三种返回值:SingleTon、SingleTon*、SingleTon&(SingleTon是类名)。看SingleTon,它返回了一个对象,但是还需要一个临时两量把这个对象带出去,这样生成了两个对象,不符合单例模式的核心思想了;反观引用和指针都不用生成临时量把对象带出去,所以说用指针和引用都可以。
综上所述,函数应该设置在public下的:

static SingleTon* getInstance(){}

而构造函数设置在私有下:

private:
	SingleTon(){}

在构造函数中,有一种特殊的叫做拷贝构造函数,他也是可以构造对象的,也将它放在私有下,但是不用实现,因为调用它之前肯定会调用构造函数,所以只将它设置成私有的就可以了:

private:
	SingleTon(const SingleTon&);

在私有成员中的最后一项,设置一个标记来标记生成的对象,并且这个标记也是类内共享的,因为后面来的人也需要知道是否已经存在了一个对象:

privatestatic SingleTon *ptr;

当然在私有下知识生命,初始化还是要在类外:

SingleTon* SingleTon::ptr = new SingleTon();

综上所述,我们可以得到这个类原型:

class SingleTon
{
public:
	static SingleTon* getInstance()
	{
		return ptr;
	}
private:
	SingleTon(){}
	SingleTon(const SingleTon1&);
	static SingleTon *ptr;
};

SingleTon* SingleTon::ptr = new SingleTon();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值