Flyweight 享元模式
public class Font //12+8 bytes 8用于垃圾手机{string fontName; //4 bytesint size; //4 bytes Color color; //4 bytespublic Font( string fontName, int size, Color color ){this.fontName = fontName;this.size = size;this.color = color;}public override bool Equals( object obj ){return base.Equals( obj );}}public class Color{}
public class Charactor //(2+4+20+2)+8 byes =36 bytes 8 bytes用于垃圾收集{char c; //2 bytes//Font f; //20 bytes //重点就在于下面的实现private static Hashtable fontTable = new Hashtable();public void SetFont( String name, int size, Color color ){if( fontTable.ContainsKey( name ) ){return;}else{Font f = new Font( name, size, color );fontTable.Add( name,f );}}}
其实主要就是为了降低内存,对一些固定不变的东西做一个共享,经常变换的不做考虑,在.net里面字符串就是做了享元处理,codebehid也是享元模式的一个处理
Flyweight 享元模式相关推荐
- C++设计模式-Flyweight享元模式
Flyweight享元模式 作用:运用共享技术有效地支持大量细粒度的对象. 内部状态intrinsic和外部状态extrinsic: 1)Flyweight模式中,最重要的是将对象分解成intrins ...
- 6中结构型设计模式的对比理解(Composite组合模式,Proxy代理模式,Flyweight享元模式,Facade门面模式,Bridge桥接模式,Decorator装饰器模式)
结构型模式 结构型模式用来组装 类和对象,以获得更大的结构. 结构型类模式,通过继承机制来组合接口或类.简单的例子就是多重继承,最后一个类拥有所有父类的性质.这个模式有助于独立开发一个协同类.另一个例 ...
- php实现享元模式,php设计模式 flyweight (享元模式)
25种php设计模式,你全都知道吗?下面用代码介绍享元模式(flyweight模式)<?php /** * 享元模式 * * 运用享元技术有效的支持大量细粒度的对象 */ class CD { ...
- 设计模式学习笔记--Flyweight享元模式
Flyweight模式也叫享元模式,是由GoF提出的23种设计模式中的一种.Flyweight模式是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用,所以叫享元. 此模式解决的是由于大量 ...
- [转载] C#面向对象设计模式纵横谈——12. Flyweight享元模式
主讲:李建忠 来源:http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/CsharpOOD. ...
- 设计模式之享元模式(Flyweight)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- java23中设计模式——结构模式——Flyweight(享元)
2019独角兽企业重金招聘Python工程师标准>>> 面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得 很庞大,比如,字处理软件,如果以每个文字都作为一 ...
- 享元模式-Flyweight(Java实现)
享元模式-Flyweight 享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用. 本文中的例子如下: 使用享元模式: 小明想看编程技术的书, ...
- [设计模式-结构型]享元模式(Flyweight )
概括 名称 Flyweight 结构 动机 运用共享技术有效地支持大量细粒度的对象. 适用性 一个应用程序使用了大量的对象. 完全由于使用大量的对象,造成很大的存储开销. 对象的大多数状态都可变为外部 ...
最新文章
- 算法经典书籍--算法设计与分析基础
- 扫脸支付引忧虑,那试试扫手支付?
- 测试socket udp 单次传输数据上限(sendto()函数data不能超过65507字节。udp头占8字节,ip头占20字节,加起来正好65535字节)
- 二十一、String、StringBuffer和StringBuilder的区别是什么?
- vue prop不同数据类型(数组,对象..)设置默认值
- 视频编解码器常见问题介绍
- SQL中使用DISTINCT显示多个字段的方法(不使用DISTINCT了)
- Vuex中的核心方法
- sdoi r1前的注意事项
- restFul风格实现CRUD
- Drupal是如何避免页面缓存保存Message信息的
- 2.4~5 x86计算机的组成
- 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——01-06 工作内容:做个工程师,而非程序工人...
- 深入理解Nginx:模块开发与架构解析
- 西威变频器使用说明书_西威变频器说明书
- QNAP 威联通 NAS的个人使用经验 篇三:#剁主计划-西安# 时隔3年,NAS使用须知
- linux tc限制网卡速度,使用TC 对LINUX服务器网卡进行带宽限制的办法
- Ajax中的 “success” 与 “error ”回调函数何时调用 ?
- 【Auto.JS】Autojs官方提取文档使用说明函数 (1)
- 2022年智能手机市场概括