享元模式

  1. 概述
    • 概念 享元模式通过共享,用来尽可能减少内存使用量,运用共享技术有效地支持大量细粒度的对象
    • 作用:减少创建对象的数量,以减少内存占用和提高性能
  2. UML类图
  1. 代码栗子
    • 享元模式中有三种角色
      1. 抽象享元角色
      2. 具体享元角色
      3. 享元工厂角色
    • 具体享元角色 public class ExamSite { private String id; /** * 道路名称 */ private String name; /** * 路况 */ private String road; }
    • 抽象享元角色 public class SitePool extends ExamSite{ private String key ; public SitePool(String key) { this.key = key; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } }
    • 享元工厂角色 public class SiteFactory { /** * 定义池对象 */ private static Map<String, ExamSite> pool = new HashMap<>(); /** * 享元工厂 * * @param key 值 * @return */ public static ExamSite getExamSite(String key) { //设置返回的对象 ExamSite examSite; if (pool.containsKey(key)) { System.out.println(key + "----从池子中取得"); examSite = pool.get(key); } else { System.out.println(key + "----建立对象,并放入到池子中"); examSite = new ExamSite(); pool.put(key, examSite); } return examSite; } }
  2. 总结
    • 场景
      1. 系统中存在大量类似的对象。
      2. 细颗粒的对象都具备较接近的外部状态,而且内部状态与环境无关
      3. 缓冲池的场景
    • 栗子 JDK中 String的设计

参考资料

书籍《设计模式之禅》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • modelMapper入门及使用解析

    在mappermodel中,一般情况下保持属性名一致即可以不用任何配置就可直接转换,mappermodel的原理是基于反射原理进行赋值的,或是直接对成员变量赋值...

    tanoak
  • 组合模式

    tanoak
  • WebMagic初探,了解爬虫

    tanoak
  • redis集群之哨兵模式

    安装配置可参考一下地址: https://www.cnblogs.com/zhoujinyi/p/5569462.html

    一笠风雨任生平
  • Spring Boot 整合 Redis

    实际开发中缓存处理是必须的,不可能我们每次客户端去请求一次服务器,服务器每次都要去数据库中进行查找,为什么要使用缓存?说到底是为了提高系统的运行速度。将用户频繁...

    南风
  • Guava Cache 用法介绍

    Guava Cache是在内存中缓存数据,相比较于数据库或redis存储,访问内存中的数据会更加高效。Guava官网介绍,下面的这几种情况可以考虑使用Guava...

    zhisheng
  • [享学Netflix] 三十九、Ribbon核心API源码解析:ribbon-core(二)IClientConfig配置详解

    代码下载地址:https://github.com/f641385712/netflix-learning

    YourBatman
  • Swagger笔记(二)springboot集成和ApiModel使用不当的一个小问题

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    yingzi_code
  • Redis笔记(六):Java中使用Redis

    下载地址: http://central.maven.org/maven2/redis/clients/jedis/2.9.0/jedis-2.9.0.jar

    朝雨忆轻尘
  • windows服务控制类

    http://www.cnblogs.com/yanweidie/p/3542670.html

    跟着阿笨一起玩NET

扫码关注云+社区

领取腾讯云代金券