2020-12-05

                                                                                                                设计模式 之单件模式
    一、构造函数是private ,所以他是独一无二,不会产生多的对象。
    二、调用实例化,一般是通过调用一个 公有的静态函数 getInstance()来获取对象。
    当我们在多线程的时候,可能会产生多个对象,为什么呢?因为会出现同步的问题,所以我们的
    getInstance 需要做一个同步。
    statict Person* getInstance()
    {
        if(signel==NULL)  //这个地方,多线程的时候,可能存在当二个线程都为空,然后各自创建的情况。
            signel = new Person();
        return signel;
    
    }
    如果同步,那么可能存在同步消耗,如果大量的有这个消耗,那么我们就需要重新考虑,如果我们的应用能
    接受这种消耗,那么我们则可以不理睬这个,继续用我们以前的单件方式。
    
    急切实例:
    static Person* signel = new Person();
    static Persion* getInstance()  //在调用 getInstance 前,signel 就存在。
    {
        return signel;
    }
    双重检测加锁:
    static Persion* signel;
    static Persion* getInstance()
    {
        if(signel==NULL) //只需要在第一此创建的时候才有同步,大大的加快了速度
        {
            synchronized(signel)
            {
                if(signel==NULL)
                    signel = new Persion();
            }
        }
        return signel;
    }
    通用实例:
    static Persion* signel;
    static Persion* getInstance()
    {
        synchronized(signel) //如果需要大量的调用实例,那么就会出现资源的消耗
        {
            if(signel==NULL)
                signel=new Persion();
        }
        return signel;
    }
    什么时候需要一个单件呢?首先,我们确定我们的程序最多只需要一个类的实例。

最近在进行一个项目的架构,所以会把用到的设计模式都做一个总结贴出来,代码和语句可能不完整。等架构完成后,会写一些最近做的hi3559a的一些内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dreamliweiming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值