• 设计模式课程 设计模式精讲 13-1 享元模式讲解


    1    课程讲解

    1.1  类型:

    1.2  定义:

    1.3  应用场景:

    1.4  优点:

    1.5  缺点:

    1.6  扩展:

    1.7  和其他设计模式比较:

    1    课程讲解
    1.1  类型:

    结构型:

    1.2  定义:

    ◆定义:提供了减少对象数量从而改善应用所需的对象结构的方式
    ◆运用共享技术有效地支持大量细粒度的对象

    (可能对于内存溢出类型的问题解决有效)(池子)

    1.3  应用场景:

    ◆ a  常常应用于系统底层的开发,以便解决系统的性能问题。

    系统中如果有大量的对象,可能会造成内存溢出,我们可以把共同的部分抽象出来,有相同的业务请求,则返回在内存中的已有对象,避免重新创建。


    ◆   b  系统有大量相似对象、需要缓冲池的场景。

    (某个对象的复用度越高,越倾向于使用享元模式)

    1.4  优点:

    ◆减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率
    ◆减少内存之外的其他资源占用

    (a  new对象需要时间,当我们直接从池子中取对象的时候,对象不用创建,节省了时间,特别是当对象并发或者使用率比较高的时候,提高了效率

       b  文件句柄和窗口句柄是有一定的限制的,当同一对象被特别多的时候,往往可能导致句柄达到极限而导致崩溃)

    1.5  缺点:

    ◆关注内/外部状态、关注线程安全问题

    我们使用共享模式的时候,大都是使用hashMap,不会用HashTable(用hashTable会由于同步锁造成效率过低(特别是应用在报考系统3天内登录多少人,某一天微博大事件情况))


    ◆使系统、程序的逻辑复杂化

    外部状态不应该随着内部状态的变化而变化

    1.6  扩展:

    内部状态:

    在享元模式内部并且不会随着环境改变而改变的共享部分;无论外部环境如何变化,我都不变,并且该状态在享元模式内部。

    外部状态:

    随着环境改变而改变的就是外部状态,这种状态记录在享元模式的外部。

    1.7  和其他设计模式比较:

    享元模式和代理模式:

    代理模式是代理一个类,如果生成这个代理类花的资源和时间比较多,可以使用享元模式处理这个类的速度。

    享元模式和单例模式:

    容器单例是两种方式的一种结合。享元模式是一种复用对象的思想

  • 相关阅读:
    个推推出青少年网络游戏防沉迷解决方案,助力开发者构建完善的青少年保护系统!
    个推2022届校园招聘火热启动!数据岗、算法岗、研发岗,热门技术岗位等你来!
    iOS里的动态库和静态库
    idea中svn回退到指定版本
    稻花香项目接口文档
    Ubuntu系统记录
    获取当前系统名称、获取当前操作系统信息
    Temporary failure in name resolution
    零基础学python:错误与异常
    Python内置函数之输入输出函数
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/11518765.html
Copyright © 2020-2023  润新知