参考:http://blog.csdn.net/jason0539/article/details/22908915

解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大节约了资源。

在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个对象存储池(Flyweight Pool)来存放内部状态的对象。Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度.应用场合很多。

所以享元模式有点单例模式的意思。

代码:

具体类:

工厂类:

测试类:

输出:

享元模式和单例模式的区别:

享元模式可以理解成为一组共享对象的集合。

享元模式是一个类很多不同的对象,而单例模式一个类只有一个对象。

享元模式主要为了节省内存空间提升程序性能(避免大量new操作),而单例模式主要是出于共享的目的

11.java设计模式(读书笔记)享元模式相关推荐

  1. 设计模式学习笔记——享元(Flyweight)模式

    设计模式学习笔记--享元(Flyweight)模式 @(设计模式)[设计模式, 享元模式, flyweight] 设计模式学习笔记享元Flyweight模式 基本介绍 享元案例 类图 实现代码 Big ...

  2. 设计模式读书笔记-----工厂方法模式

    一.问题 在前一章<设计模式读书笔记-----简单工厂模式>中通过披萨的实例介绍了简单工厂模式.在披萨实例中,如果我想根据地域的不同生产出不同口味的披萨,如纽约口味披萨,芝加哥口味披萨.如 ...

  3. 结构型设计模式(五) 之 享元模式是池技术的表现

    1 定义 享元模式(Flyweight Pattern)属于结构型设计模式之一,它主要是使用共享对象有效地避免了创建过多的性质相近的对象,从而降低内存的占用,提高程序的性能.它也是池技术的重要实现方式 ...

  4. 图解Java设计模式学习笔记——结构型模式(适配器模式、桥接模式、装饰者模式、组合模式、外观模式、享元模式、代理模式)

    一.适配器模式(类适配器.对象适配器.接口适配器) 1.现实生活中的例子 泰国插座用的是两孔的(欧标),可以买个多功能转换插头(适配器),这样就可以使用了国内的电器了. 2.基本介绍 适配器模式(Ad ...

  5. 设计模式学习笔记--享元(Flyweight)模式

    写在模式学习之前 什么是设计模式:在我们进行程序设计时,逐渐形成了一些典型问题和问题的解决方案,这就是软件模式:每一个模式描述了一个在我们程序设计中经常发生的问题,以及该问题的解决方案:当我们碰到模式 ...

  6. 大话设计模式笔记 享元模式

    享元模式(Flyweigh),运用共享技术有效地支持大量细粒度的对象. package flyweight;//可以接受并作用于外部状态 public abstract class Flyweight ...

  7. Java描述设计模式(18):享元模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.使用场景 应用代码 public class C01_InScene {public static void main(String[] ...

  8. C#设计模式之十一享元模式(Flyweight Pattern)【结构型】

    一.引言 今天我们要讲[结构型]设计模式的第六个模式,该模式是[享元模式],英文名称是:Flyweight Pattern.还是老套路,先从名字上来看看."享元"是不是可以这样理解 ...

  9. 【设计模式自习室】享元模式 Flyweight Pattern:减少对象数量

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

最新文章

  1. 如今全球超级计算机运算速度排名,截至2019年(或2018年),全球超级计算机运算速度排名第一的是?...
  2. GET和POST的真正区别
  3. MyBatis配置:在控制台打印SQL语句
  4. [渝粤教育] 广东-国家-开放大学 21秋期末考试计量经济学10551k1
  5. 第12章 存储器的保护
  6. BZOJ3421 : Poi2013 Walk
  7. Knockout开发中文API系列1
  8. URI和URL的区别和关联
  9. WebClient Exceeded limit on max bytes to buffer : 262144 异常解决
  10. jq click()方法无反应?
  11. uni-app的学习及使用
  12. 贪吃机器人DIY(二)
  13. 数据结构学习,哈希表(链地址)
  14. VMware Workstation 15 Pro 激活密钥
  15. 计算机类图书的中国法类号,公共书目查询
  16. 20201215记一次502错误
  17. Fusion 360 学习笔记
  18. 计算机一级模块数量填什么,2015年全国各地职计算机考试初级,中级,(副)高级 通过模块数量.doc...
  19. Como fazer uma要求GET de uma API REST em Java e转换器JSON em um objeto
  20. ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

热门文章

  1. FastAPI简介与快速体验
  2. java换行符在windows和linux下区别
  3. linux驱动程序 ---- 触摸屏
  4. 刷脸支付优势对移动支付方式做出很好地补充
  5. 【python】给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列。
  6. 阿里开出一元店,和名创优品的新零售之战即将落幕?
  7. 今天用Qt整合腾讯会议sdk时,编译的程序报:无法启动此程序,因为计算机中丢失ucrtbased.dll。尝试重新安装改程序以解决
  8. Windows下多线程编程 C/C++ —— 矩阵乘法的并行算法
  9. 使用github客户端上传代码
  10. 首位中国AI主播出现但不稀奇,天猫精灵每天都能给你读新闻