【C++】设计模式之单例模式(懒汉模式和饿汉模式)

一、单例模式思想

1、核心

让一个类中只能生成一个对象,也就是如果使用者调用时是不能生成第二个对象的。

2、分析

在类中生成一个对象,那我们只能在生成对象上进行操作。
(1)对象生成的特点:

  • 开辟内存空间
    这是系统进行开辟的,我们无法进行操作
  • 调用构造函数
    我们可以让构造函数只被调用一次,也就是让对象只能在第一次调用时,调用构造函数。
    (2)让构造函数只被调用一次的方法:
    给出一个判断的标识:
  • 如果已经有对象,直接返回之前的对象。
  • 如果没有对象生成,就调用构造函数生成唯一的对象。
    (3)一般来说,构造函数是在public(公有)下的,那在任意位置都能调用,所以无法控制生成对象的个数。
    (4)单例模式把构造函数写在private(私有)下,也就是把构造函数屏蔽起来,不让任意函数调用。
    (5)那构造函数屏蔽起来,那怎么在调用点生成唯一的对象???
    给出一个接口,用接口来生成唯一的对象。
    也可以理解为在公有下写一个函数来生成唯一的对象。
    (6)公有下的接口满足:
  • 不依赖对象,我们知道对象的生成是不能依赖对象的,所以要设置为静态的。
  • 返回值不能用类类型,因为类类型会生成临时变量,违背我们生成唯一对象的初衷。所以一般要用*或者&,不会生成临时对象。

3、实例设计

class Master
{
   
public:
	static Master* getInstance(char* name, int age, bool sex)//(1)
	{
   
		if (pm == NULL)
		{
   
			pm = new Master(name, age, sex);
		}
		return pm;
	}
private:
	Master(char* name, int age, bool sex)
		:mname(new char[strlen(name) + 1]()), mage(age), msex(sex)
	{
   
		strcpy_s
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值