`

4、享元设计模式

阅读更多

一、享元模式(Flyweight)

 

  1. Flyweight在拳击比赛中指最轻量级。
  2. 享元模式以共享的方式高效的支持大量的细粒度对象。
  3. 是一种结构模式,处理类和对象之间的组合,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)
  4. 享元模式是一个提高程序效率和性能的模式
  5. 会大大加快程序的运行速度,应用场合很多

 

  • 比如从一个数据库中读取一系列的字符串,这些字符串中有很多重复的,
  • 这时候就可以将重复的字符存储在Flyweight池中

 

  • 又比如说一个文本系统,每个字母定义一个对象,大小写在一块移动定义52个对象
  • 如果在一个1M的文本中有那么多的字母,如果每个字母都要定义一个对象的话,内存占有量就太大了
  • 如果每个字母都共享一个对象的话那就只用定义52个对象,
  • 用到的时候直接来拿就节省了很多资源

 

  1. 在JAVA语言中,String和Integer类型就是使用了享元模式。
  2. String对象是final类型,对象一旦创建就不可改变。
  3. 在JAVA中字符串常量都是存在常量池中的,JAVA会确保一个字符串常量在常量池中只有一个拷贝。
  4. String a="abc",其中"abc"就是一个字符串常量。
  5. Integer的缓存范围是-128到127

 

  1. 享元模式的重点在于分离变与不变。
  2. 把一个对象的状态分成内部状态和外部状态,内部状态是不变的,外部状态是可变的。
  3. 然后通过共享不变的部分,达到减少对象数量并节约内存的目的。
  4. 享元对象的优点:减少对象数量,节省内存空间
  5. 享元模式的缺点:维护共享对象,需要额外的开销(用一个线程来维护垃圾回收)
  6. 享元模式的本质:分离与共享。
分享到:
评论

相关推荐

    享元模式的分析以及实际应用.docx

    享元模式的分析以及实际应用 1.前言 4 1.1 课题的研究背景 4 1.2 课题主要研究目标 4 2.相关技术简介 4 2.1Java简介 4 3. 享元模式介绍 5 3.1举例分析 5 3.2基本介绍 5 ...6. 享元设计模式学习总结: 13

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...

    计算机后端-Java-图解java设计模式089 享元模式(4)-Inte.avi

    计算机后端-Java-图解java设计模式089 享元模式(4)-Inte.avi

    C#设计模式.PDF

    C#设计模式(1) 4 一、 C# 面向对象程序设计复习 5 二、 设计模式举例 5 三、 先有鸡还是先有蛋? 7 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 8 五、 .net本质 9 C#设计模式(2) 11 一、 "开放-封闭"原则(OCP) ...

    研磨设计模式(完整带书签).part2.pdf

    第20章 享元模式(Flyweight) 第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) ...

    C#面向对象设计模式纵横谈(视频与源码)

    C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) ...

    java中的设计模式,主要的设计模式

    4. 有了设计模式之后,可以让代码更容易被理解,确保了复用性、可靠性、可扩展性 单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式 适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、...

    lua设计模式总结

    7、享元模式lua实现 行为模式 1、策略模式lua实现 2、模板方法模式lua实现 3、观察者模式lua实现 4、状态模式lua实现 5、迭代器模式lua实现 6、备忘录模式lua实现 7、命令模式lua实现 8、职责链模式lua实现 9、解释...

    33种JAVA设计模式DEMO

    享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    设计模式--C++

    1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 ...

    设计模式 GOF 23

    1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 ...

    C#设计模式_设计模式_C#_

    享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. ...

    设计模式可复用面向对象软件的基础.zip

    1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 ...

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    32种设计模式

    C# 32种设计模式: 创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) ...

    设计模式_源代码大全.zip

    设计模式_源代码大全.zip 包括:1.简单工厂模式 2.策略模式 3.装饰模式 4.代理模式 5.工厂方法模式 6.原型模式 7.模板方法模型 8.外观模式 9.建造者模式 10.观察者模式 11.抽象工厂模式 12.状态模式 13.适配器模式 ...

    C#设计模式大全

    C#设计模式(4)-Simple Factory Pattern 一、 简单工厂(Simple Factory)模式 二、 Simple Factory模式角色与结构: 三、 程序举例: 四、 Simple Factory模式演化 五、 优点与缺点: C#设计模式(5)-...

    设计模式(.PDF)

    1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 ...

    研磨设计模式(完整带书签).part1.pdf

    第20章 享元模式(Flyweight) 第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) ...

Global site tag (gtag.js) - Google Analytics