11.java设计模式(读书笔记)享元模式
参考:http://blog.csdn.net/jason0539/article/details/22908915
解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大节约了资源。
在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个对象存储池(Flyweight Pool)来存放内部状态的对象。Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度.应用场合很多。
所以享元模式有点单例模式的意思。
代码:
具体类:
工厂类:
测试类:
输出:
享元模式和单例模式的区别:
享元模式可以理解成为一组共享对象的集合。
享元模式是一个类很多不同的对象,而单例模式一个类只有一个对象。
享元模式主要为了节省内存空间提升程序性能(避免大量new操作),而单例模式主要是出于共享的目的
11.java设计模式(读书笔记)享元模式相关推荐
- 设计模式学习笔记——享元(Flyweight)模式
设计模式学习笔记--享元(Flyweight)模式 @(设计模式)[设计模式, 享元模式, flyweight] 设计模式学习笔记享元Flyweight模式 基本介绍 享元案例 类图 实现代码 Big ...
- 设计模式读书笔记-----工厂方法模式
一.问题 在前一章<设计模式读书笔记-----简单工厂模式>中通过披萨的实例介绍了简单工厂模式.在披萨实例中,如果我想根据地域的不同生产出不同口味的披萨,如纽约口味披萨,芝加哥口味披萨.如 ...
- 结构型设计模式(五) 之 享元模式是池技术的表现
1 定义 享元模式(Flyweight Pattern)属于结构型设计模式之一,它主要是使用共享对象有效地避免了创建过多的性质相近的对象,从而降低内存的占用,提高程序的性能.它也是池技术的重要实现方式 ...
- 图解Java设计模式学习笔记——结构型模式(适配器模式、桥接模式、装饰者模式、组合模式、外观模式、享元模式、代理模式)
一.适配器模式(类适配器.对象适配器.接口适配器) 1.现实生活中的例子 泰国插座用的是两孔的(欧标),可以买个多功能转换插头(适配器),这样就可以使用了国内的电器了. 2.基本介绍 适配器模式(Ad ...
- 设计模式学习笔记--享元(Flyweight)模式
写在模式学习之前 什么是设计模式:在我们进行程序设计时,逐渐形成了一些典型问题和问题的解决方案,这就是软件模式:每一个模式描述了一个在我们程序设计中经常发生的问题,以及该问题的解决方案:当我们碰到模式 ...
- 大话设计模式笔记 享元模式
享元模式(Flyweigh),运用共享技术有效地支持大量细粒度的对象. package flyweight;//可以接受并作用于外部状态 public abstract class Flyweight ...
- Java描述设计模式(18):享元模式
本文源码:GitHub·点这里 || GitEE·点这里 一.使用场景 应用代码 public class C01_InScene {public static void main(String[] ...
- C#设计模式之十一享元模式(Flyweight Pattern)【结构型】
一.引言 今天我们要讲[结构型]设计模式的第六个模式,该模式是[享元模式],英文名称是:Flyweight Pattern.还是老套路,先从名字上来看看."享元"是不是可以这样理解 ...
- 【设计模式自习室】享元模式 Flyweight Pattern:减少对象数量
前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...
最新文章
- 如今全球超级计算机运算速度排名,截至2019年(或2018年),全球超级计算机运算速度排名第一的是?...
- GET和POST的真正区别
- MyBatis配置:在控制台打印SQL语句
- [渝粤教育] 广东-国家-开放大学 21秋期末考试计量经济学10551k1
- 第12章 存储器的保护
- BZOJ3421 : Poi2013 Walk
- Knockout开发中文API系列1
- URI和URL的区别和关联
- WebClient Exceeded limit on max bytes to buffer : 262144 异常解决
- jq click()方法无反应?
- uni-app的学习及使用
- 贪吃机器人DIY(二)
- 数据结构学习,哈希表(链地址)
- VMware Workstation 15 Pro 激活密钥
- 计算机类图书的中国法类号,公共书目查询
- 20201215记一次502错误
- Fusion 360 学习笔记
- 计算机一级模块数量填什么,2015年全国各地职计算机考试初级,中级,(副)高级 通过模块数量.doc...
- Como fazer uma要求GET de uma API REST em Java e转换器JSON em um objeto
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
热门文章
- FastAPI简介与快速体验
- java换行符在windows和linux下区别
- linux驱动程序 ---- 触摸屏
- 刷脸支付优势对移动支付方式做出很好地补充
- 【python】给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列。
- 阿里开出一元店,和名创优品的新零售之战即将落幕?
- 今天用Qt整合腾讯会议sdk时,编译的程序报:无法启动此程序,因为计算机中丢失ucrtbased.dll。尝试重新安装改程序以解决
- Windows下多线程编程 C/C++ —— 矩阵乘法的并行算法
- 使用github客户端上传代码
- 首位中国AI主播出现但不稀奇,天猫精灵每天都能给你读新闻