- 浏览: 592487 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
青春依旧:
html5教学哪家强!当然要上华清远见!
深入理解浏览器兼容性模式 -
ashur:
真机智,看得我都笑自己了
js 字符串转dom 和dom 转字符串 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
solr第一弹 autocomplete(自动补全) -
FakLove:
连线如何删除啊
基于html5 的拖拽连线 -
FakLove:
连线可以再删除吗?
基于html5 的拖拽连线
享元模式的特点是,复用我们内存中已存在的对象,降低系统创建对象实例
的性能消耗
我们来给出个简单的享元模式的应用前后的对比图,大概我们就知道享元模式的重要作用了。
我们这里以绘制一个有样式的字体来说明吧,有的时候我们想绘制一个纯色的文字,比如红色,那么我们可能需要创建很多的实例,通常来说,这些
实例的差别不大,这个时候,我们可以考虑复用其中创建的某个实例,而不用去new这么多相同的对象,来完成这样的工作。我们下面以这个例子来说
明,使用享元模式的前后对比的情况。
使用享元模式前:
使用享元模式后:
四、享元模式的特点及使用场景
4.1、享元模式的特点
享元模式的意图是通过共享有效支持大量细粒度的对象,来提供应用程序的性能,节省系统中重复创建对象实例的性能消耗,这个怎么理解呢?其实就是以下几点的含义:
1、当我们系统中某个对象类型的实例较多的情况。
2、并且要求这些实例进行分类后,发现真正有区别的分类很少的情况。
例如我们的生活中很多的场景,我们在使用拼音输入的法的时候,如果说我们每个字都是new一个对象实例的操作的话,那么内存中的实例就太可
怕,这个时候,我们是不是可以考虑将这些重复的字体在内存中只是创建一次,而是通过复用对象的形式,来组织一些可能有多个字符重复的内容呢?
也许这是一个不错的主意,我们来看看这个示例的过程吧。
4.2、享元模式的使用场景
1、当我们发现某个类型的对象有大量的实例时,我们是否可以对这些实例进行分类,经过分类后,我们发现只有很少的类别的情况下。
2、我们发现通过使用享元模式后能够提高系统的性能和不会带来更多的复杂度时。
享元模式一般是给出本地内存资源节省的一个方案,并不适合互联网上的分布式应用的情况,不过享元模式对于排他性的要求资源的控制,是个不
错的选择的。
。
四、享元模式的特点及使用场景
4.1、享元模式的特点
享元模式的意图是通过共享有效支持大量细粒度的对象,来提供应用程序的性能,节省系统中重复创建对象实例的性能消耗,这个怎么理解呢?其实就是以下几点的含义:
1、当我们系统中某个对象类型的实例较多的情况。
2、并且要求这些实例进行分类后,发现真正有区别的分类很少的情况。
例如我们的生活中很多的场景,我们在使用拼音输入的法的时候,如果说我们每个字都是new一个对象实例的操作的话,那么内存中的实例就太可
怕,这个时候,我们是不是可以考虑将这些重复的字体在内存中只是创建一次,而是通过复用对象的形式,来组织一些可能有多个字符重复的内容呢?
也许这是一个不错的主意,我们来看看这个示例的过程吧。
4.2、享元模式的使用场景
1、当我们发现某个类型的对象有大量的实例时,我们是否可以对这些实例进行分类,经过分类后,我们发现只有很少的类别的情况下。
2、我们发现通过使用享元模式后能够提高系统的性能和不会带来更多的复杂度时。
享元模式一般是给出本地内存资源节省的一个方案,并不适合互联网上的分布式应用的情况,不过享元模式对于排他性的要求资源的控制,是个不
错的选择的。
public class FontBase { private List<string> font = new List<string>(); private string fontName; public FontBase(string name) { this.fontName = name; } public FontBase AddFont(string font) { this.font.Add(font); return this; } public virtual string FontName { get { return this.fontName; } } }具体的文字类型类:public class ChineseFont : FontBase { public ChineseFont() : base("ChineseFont") { base.AddFont("ChineseFont"); } } public class EnglishFont : FontBase { public EnglishFont() : base("EnglishFont") { base.AddFont("EnglishFont"); } }具体的创建工厂类:
public class FontFactory { private Dictionary<string, FontBase> fonts = new Dictionary<string, FontBase>(); public FontBase Create(string name) { FontBase fontBase = fonts[name]; if (fontBase != null) return fontBase; fontBase = (FontBase)Activator.CreateInstance(Type.GetType(name)); return fontBase; } }
通过上面实例的讲解我们知道,我们通过缓存对象类型的形式来控制对象实例的创建过程,经典的模式中没有体现共享的状态,比如说我们在外部可能对于
享元对象来说是不共享的,内部是共享的
发表评论
-
HTML5 Server-Sent Events With Java Servlets Example
2014-05-15 15:21 1379Since the dawn of modern web ... -
集群中session同步解决方式
2014-04-06 18:19 1211集群中几种session同步解决方案的比较(转) 在集群中 ... -
Extjs 几个常用控件
2012-11-22 13:01 2324NumberField控件 整数,小数,数字限制 ... -
solr 评分机制
2012-09-28 09:00 2263转自 http://blog.chenlb.com/20 ... -
Future 模式详解(并发使用)
2012-02-16 16:22 9338我觉得很多讲Future模式的文章并没有深刻理解Fu ... -
ThreadPoolExecutor
2011-11-19 10:52 1584ThreadPoolExecutor是 jdk 1.5 ... -
spring mvc 分发器(DispatcherServlet)
2011-11-12 16:58 2777spring mvc 与其他的mvc框架一样都是一种 ... -
编码问题
2011-11-02 15:38 827JSP页面中的pageEncoding和contentTyp ... -
produce_cuctomer (生产者-消费者)模式
2011-10-26 15:08 1277一个老问题,一只水杯完成倒水,喝水的动作,保证每次都是 ... -
request session servletconfig servletcontext分析
2011-10-14 14:30 2293HttpServletRequest,HttpServle ... -
solr DataimportHanler fileld 出现null
2011-09-08 09:58 1138I'm wo ... -
solr DataimportHanler 效率对比
2011-09-08 09:28 111:用solrj 的api 调用封装SolrInputDocu ... -
solr DataimportHanler
2011-09-03 09:36 1281大多数的应用程序将数据存储在关系数据库、xml文件中 ... -
门面模式(Facade)
2011-09-02 10:32 1726一、 门面(Facade)模式 外部与一个子系统的通 ... -
solr/home是个什么东西
2011-07-19 16:44 1946一直不太明白solr home是个什么东西,每次都 ... -
lucene多索引上的搜索
2011-04-09 15:35 1431上代码 import org.apache.lucene.d ... -
solr第二弹 关于“新蛋” “当当” “京东” 产品搜索的实现假想(1)
2011-04-09 09:39 80资料目前正在整理,很快会贴上去,主要内容 ... -
solr第一弹 autocomplete(自动补全)
2011-04-08 16:15 7237百度和google中都有文字的自动补全 ... -
单例模式再讨论(有关序列化的单例问题)
2011-02-11 09:43 3319class Dog implements Serializa ... -
nutch 更新url.txt无法执行新的抓取
2010-04-19 16:59 1753nutch在使用中经常会修改url.txt中要抓取的目标网站 ...
相关推荐
享元模式是设计模式中的一种结构型模式,它主要通过共享已有对象来减少内存中对象的数量,从而提高系统性能。在C#编程中,享元模式尤其适用于那些创建大量相似对象且内存消耗较大的场景。本篇文章将深入探讨享元模式...
享元模式(Flyweight Pattern)是设计模式中的一种优化模式,主要用于减少创建大量相似对象所需的内存消耗。在C++程序设计中,当系统中存在大量的相同或相似的对象时,使用享元模式可以有效地降低内存占用,提高系统...
享元模式(Flyweight Pattern)是一种结构型设计模式,它能有效地减少系统中对象的数量,从而降低内存消耗,提高性能。这种模式通过共享大量相似对象的内部状态来达到这一目标,而只保留对象的外部状态在外部管理。...
享元模式(Flyweight Pattern)是一种结构型设计模式,用于减少创建大量小对象所带来的内存开销。通过共享对象,享元模式能够有效地支持大量细粒度的对象,减少内存使用并提高性能。它常用于需要大量重复对象的场景...
享元模式(Flyweight Pattern)是软件设计中的一种结构型设计模式,它通过共享技术来支持大量细粒度的对象,以此来降低内存中对象的数量。在PHP中实现享元模式,可以帮助我们优化程序性能,特别是在对象数目过多时,...
享元模式(Flyweight Pattern)是一种结构型设计模式,旨在减少大量相似对象的创建,降低系统资源的开销和内存压力。该模式通过共享已经存在的对象来大幅减少需要创建的对象数量,避免创建大量相似类带来的开销,...
适配器模式(Adapter Pattern) 提供者模式(Provider Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 原型模式(Prototype Pattern) 责任链模式(Chain of Responsibility Pattern) 中介者模式...
享元模式(Flyweight Pattern)是结构型模式的一种,主要用于减少大量相似对象的内存占用,提高系统的性能和效率。 模式定义 享元模式的定义是:运用共享技术有效地支持大量细粒度的对象。该模式将一个对象的状态...
**享元模式(Flyweight Pattern)** 享元模式是一种用于节省内存的结构型设计模式,它通过共享大量细粒度对象来减少内存消耗。享元模式通常用于处理大量相似对象的场景,例如在文本编辑器中处理字符、在图形渲染中...
享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享来高效地支持大量细粒度对象的使用,减少内存使用或计算时间。享元模式可以有效地支持大量对象的复用,使程序尽可能减少创建对象的次数,从而降低...
享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式...
享元模式(Flyweight Pattern)是一种对象结构型设计模式,它的主要目的是通过共享技术来有效地支持大量细粒度对象的复用。在享元模式下,系统仅使用少量相似但状态变化不大的对象,这些对象可以被多次复用,极大地...
1、基础概念 1.2 类间关系 关联关系(Association) 聚合关系(Aggregation) 组合关系(Composition) 依赖关系(Dependency) 泛化关系(Generalization) 实现关系(Realization) ...享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象. 下面是一个享元模式的demo: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话设计模式 设计模式——享元模式 ...
享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式...
享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. ...
享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式: 责任链模式(Chain of Responsibility Pattern) ...
在这个名为"designPattern8"的压缩包中,我们可以深入探讨享元模式的原理、应用场景以及如何在实际项目中实现它。 享元模式的核心思想是运用共享技术有效地支持大量细粒度的对象。通常,这些对象具有许多相同的属性...
1.简介享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。2.举例当使用Integer.valueOf创建对象