设计模式分类之对象性能模式

本文探讨了两种用于提高应用程序中对象性能的设计模式:单例模式和享元模式。单例模式确保类只有一个实例,提供全局访问点,避免资源浪费。在多线程环境下,推荐使用局部静态变量实现线程安全的单例。享元模式通过对象共享减少内存消耗,适用于大量细粒度对象的场景。应用享元模式时需注意对象状态的管理,可建立对象池以复用对象。这两种模式在软件设计中能有效提升效率并优化内存使用。
摘要由CSDN通过智能技术生成

对象性能模式

定义:为了提高应用程序中对象的性能而衍生出的模式

“对象性能模式”:

  1. Singleton——单例模式
  2. Flyweight——享元模式

Singleton——单例模式

定义:保证一个类只能有一个实例,并提供这个实例的全局访问点。

要点

  1. 不能有构造函数和Clone接口;
  2. 不能直接使用双重检查锁,会出现 reorder 的问题,如要使用应加入 atomic 标识;

使用

  1. 在单线程的情况下可以直接使用线程不安全的方式即可;

  2. 多线程情况下可以使用加入 atomic 标识后的方式;

  3. 推荐使用局部静态变量的方式,书写简单、线程安全且跨平台。

    // 局部静态变量只会初始化一次,并且是线程安全的
    Singleton *Singleton::GetInstance2()
    {
        static Singleton *ins = new Singleton();
        return ins;
    }
    或者
    Singleton &Singleton::GetInstance2()
    {
        static Singleton ins;
        return ins;
    }
    

Flyweight——享元模式

定义:利用共享技术有效地支持大量细粒度的对象。采用对象共享的做法来降低系统中对象的个数,具体实现方面要注意对象状态。

注意:“大量”的概念需要进行评估,非达到一定数量级后不需要使用此模式。

使用:类似于添加一个对象池,当对象存在则直接使用,不存在就加入池中,然后使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值