享元模式

  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的设计

参考资料

书籍《设计模式之禅》

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://www.jianshu.com/u/39192052658a复制
如有侵权,请联系 yunjia_community@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 设计模式之享元模式(flyweight模式)引入享元模式享元模式的实例程序享元模式分析

    flyweight是轻量级的意思,指的是拳击比赛中选手体重最轻的等级。顾名思义,享元设计模式就是为了是对象更轻。 不过这里的轻的描述与现实中不一样。对于对象来...

    desperate633
  • 享元模式

    享元模式定义 英文定义:A flyweight is an object that minimizes memory use by sharing as m...

    卡尔曼和玻尔兹曼谁曼
  • 享元模式

    在上面的例子中,使用Link类来保存链接数据,Browser使用这些链接,可能存在很多链接引用同一张图片,如果每个图片都保存下来,会很占用内存。所以这里使用享元...

    用户2936342
  • 享元模式

    享元模式 如果在一个系统中存在多个相同的对象,那么只需共享一份对象的拷贝,而不必为每一次使用都创建新的对象。这里可以看出,享元模式是对象的结构模式。享元模式以共...

    xiangzhihong
  • 享元模式

    一、简介 1、享元模式运用共享技术有效地支持大量细粒度的对象。 2、享元模式是为了减少同种类的实例化,以达到节省内存的目的。 3、类成员函数 抽象享元类(Fly...

    用户1215536
  • 享元模式

    享元模式核心掌握的一点就是——共享。如果一个程序代码中存在大量细粒度的对象,而这些大量的对象造成了很大的存储开销时就应该考虑使用。例如一个博客网站,每个人根据自...

    用户1148394
  • 享元模式

    享元(flyweight)模式是一种用于性能优化的模式,“fly”在这里是苍蝇的意思,意为蝇量级。享元模式的核心是运用共享技术来有效支持大量细粒度的对象。如果系...

    一粒小麦
  • 享元模式

    许喜朝
  • 享元模式

    享元模式Flyweight Pattern主要用于减少创建对象的数量,以减少内存占用和提高性能,其提供了减少对象数量从而改善应用所需的对象结构的方式,享元模式尝...

    WindrunnerMax
  • 享元模式

    享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。——《设计模式:可复用面向对象软件的基础》

    mingmingcome
  • JavaScript享元模式

    通过两个例子的对比来凸显享元模式的特点:享元模式是一个为了提高性能(空间复杂度)的设计模式,享元模式可以避免大量非常相似类的开销。

    wfaceboss
  • 设计模式-享元模式

    享元模式从字面上翻译是“蝇量级模式”,其实并不太好理解。这个模式的作用就是在一个系统当中有很多很多的对象,而这些对象很相似,有细微地方不同,单数数量太大,影响系...

    breezedancer
  • 设计模式-享元模式

    cwl_java
  • 设计模式-享元模式

    夏天降温,各家各户使用降温神器各不一样,有的用风扇,有的用冷风扇,有的用空调,牛逼的直接有中央空调(有钱,真有钱~),重点是要用,如果没有想用那装一个,下次直用...

    逍遥壮士
  • 设计模式——享元模式

    设计模式——享元模式

    Java架构师必看
  • 设计模式---享元模式

    面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元...

    大忽悠爱学习
  • 设计模式~享元模式

    享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External)。

    Vincent-yuan
  • 【设计模式-享元模式】

    【导读】程序设计有时会面临需要创建大量相同对象或相似对象,创建大量的对象会耗费大量的内存,此时就需要一个创建之后可以重复使用的设计,这就是享元模式。

    Liusy
  • Java享元模式(FlyWeight)

      内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的 对象,我们可以通过享元模式,节省内存.

    用户4919348

扫码关注云+社区

领取腾讯云代金券