- 浏览: 171521 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (193)
- Axis2 (10)
- Andriod (2)
- Java (22)
- Eclipse (2)
- 程序人生 (3)
- Windows (1)
- Sql Server 2005/2008 (7)
- 健身 (2)
- Log4j (1)
- Ant (1)
- Fatjar (2)
- 国际化 (1)
- Linux (3)
- JDBC (1)
- Oracle (2)
- 各种报错 (4)
- SWT (5)
- Tomcat (2)
- 车辆管理 (1)
- SVN (2)
- Spring (5)
- 域名服务器 (0)
- HaoWaYa (1)
- FTP (1)
- 集散中心 (1)
- 专业知识 (1)
- 面试准备 (19)
- 设计模式 (22)
- Junit (1)
- 软件下载 (3)
- 深入理解Java虚拟机 (3)
- 数据结构 (4)
- 雅思 托福 (0)
- UML (1)
- Maven (1)
- CV (1)
- ServiceMix (1)
- 电子书 (5)
- Struts1/2 (4)
- DOM W3C DHTML (3)
- Jawr (1)
- LoadRunner (1)
- Java反编译 (0)
- 英语学习 (0)
- 技术书籍 (1)
- Cygwin (0)
- ibatis (1)
- 数据库 (1)
- jQuery (0)
- s (2)
- 源代码项目 (5)
- JSRs (0)
- JCP (0)
- XML (2)
- Dojo (3)
- Effective Java (1)
- 一站到底 (3)
- JavaScript (6)
- DB2 (1)
- 刷机 (1)
- 字符 (1)
- Dynamic Web Project (1)
- 股市日记 (1)
- 代码片段 (0)
- CSS (1)
- PDF (0)
- 英语口语 (1)
- 乒乓球 (1)
- 体检 (0)
- 送花 (0)
- 面试准备-再战江湖 (5)
- ddq (0)
- sss (0)
- ssssss (0)
- 2020面试 (0)
最新评论
-
samsongbest:
Copperfield 写道你的目标很远大,佩服~惭愧,都忘了 ...
人生目标 -
Copperfield:
你的目标很远大,佩服~
人生目标
1.含义
享元模式以共享的方式高效地支持大量的细粒度对象。
2.类图
单纯享元
复合享元
3.代码
单纯享元
/* * 抽象享元角色 */ abstract public class Flyweight { abstract public void operation(String state); } /* * 具体享元角色 */ public class ConcreteFlyweight extends Flyweight { private Character intrinsicState = null; public ConcreteFlyweight(Character state) { this.intrinsicState = state; } public void operation(String state) { System.out.println("\nIntrinsic State =" + intrinsicState + ",Extrinsic State = " + state); } } /* * 享元工厂角色 */ public class FlyweightFactory { private HashMap files = new HashMap(); private Flyweight lnkFlyweight; public FlyweightFactory() { } public Flyweight factory(Character state) { if (files.containsKey(state)) { return (Flyweight) files.get(state); } else { Flyweight fly = new ConcreteFlyweight(state); files.put(state, fly); return fly; } } public void checkFlyweight() { Flyweight fly; int i = 0; System.out.println("\n======checkFlyweight()======"); for (Iterator it = files.entrySet().iterator(); it.hasNext();) { Map.Entry e = (Map.Entry) it.next(); System.out.println("Item " + (++i) + ":" + e.getKey()); } System.out.println("======checkFlyweight()======"); } } /* * 测试类 */ public class Test { public static void main(String[] args) { FlyweightFactory f = new FlyweightFactory(); Flyweight fly = f.factory(new Character('a')); fly.operation("First Call"); fly = f.factory(new Character('b')); fly.operation("Second Call"); fly = f.factory(new Character('a')); fly.operation("Third Call"); f.checkFlyweight(); } }
复合享元
/* * 抽象享元角色 */ abstract public class Flyweight { abstract public void operation(String state); } /* * 具体享元角色 */ public class ConcreteFlyweight extends Flyweight { private Character intrinsicState = null; public ConcreteFlyweight(Character state) { this.intrinsicState = state; } public void operation(String state) { System.out.println("\nIntrinsic State =" + intrinsicState + ",Extrinsic State = " + state); } } /* * 具体复合享元角色 */ public class ConcreteCompositeFlyweight extends Flyweight { private HashMap files = new HashMap(10); private Flyweight flyweight; public ConcreteCompositeFlyweight() { } public void add(Character key, Flyweight fly) { files.put(key, fly); } public void operation(String extrinsicState) { Flyweight fly = null; for (Iterator it = files.entrySet().iterator(); it.hasNext();) { Map.Entry e = (Map.Entry) it.next(); fly = (Flyweight) e.getValue(); fly.operation(extrinsicState); } } } /* * 享元工厂角色 */ public class FlyweightFactory { private HashMap files = new HashMap(); private Flyweight lnkFlyweight; public FlyweightFactory() { } /** * 复合享元工厂方法,所需状态以参量形式传入 * @param compositeState * @return */ public Flyweight factory(String compositeState) { ConcreteCompositeFlyweight ccfw = new ConcreteCompositeFlyweight(); int len = compositeState.length(); Character state = null; for (int i = 0; i < len; i++) { state = new Character(compositeState.charAt(i)); System.out.println("factory(" + state + ")"); ccfw.add(state, this.factory(state)); } return ccfw; } /** * 单纯享元工厂方法,所需状态以参量形式传入 * * @param state * @return */ public Flyweight factory(Character state) { if (files.containsKey(state)) { return (Flyweight) files.get(state); } else { Flyweight fly = new ConcreteFlyweight(state); files.put(state, fly); return fly; } } public void checkFlyweight() { Flyweight fly; int i = 0; System.out.println("\n======checkFlyweight()======"); for (Iterator it = files.entrySet().iterator(); it.hasNext();) { Map.Entry e = (Map.Entry) it.next(); System.out.println("Item " + (++i) + ":" + e.getKey()); } System.out.println("======checkFlyweight()======"); } } /* * 测试类 */ public class Test { public static void main(String[] args) { FlyweightFactory f = new FlyweightFactory(); Flyweight fly = f.factory("aba"); fly.operation("Composite Call"); } }
z
发表评论
-
22 行为模式 - 调停者(Mediator)模式
2012-08-23 10:21 8331.用意 调停者模式包装了一系列对象相互 ... -
21 行为模式 - 解释器(Interpreter)模式
2012-08-23 10:18 7631.用意 给定一个语言之后,解释器模式可以定 ... -
20 行为模式 - 访问者(Visitor)模式
2012-08-22 10:28 8681.用意 封装一些施加于某种数据结构元素之上的操 ... -
19 行为模式 - 状态(State)模式
2012-08-22 10:25 7571.用意 状态模式允许一个对象在其内部状态改变的时候 ... -
18 行为模式 - 备忘录(Memento)模式
2012-08-22 10:12 847需要跟进多重检查点 ... -
17 行为模式 - 命令(Command)模式
2012-08-20 10:29 5661.用意 命令模式把一个请求或者操作封装到一个对象中。命令模 ... -
16 行为模式 - 责任链(Chain of Responsibility)模式
2012-08-20 10:24 7561.用意 在责任链模式里,很多对象由每一个对象对其下家的引用 ... -
15 行为模式 - 迭代子(Iterator)模式
2012-08-17 10:32 7411.用意 迭代子模式又叫游标模式,可以顺序地访问一个聚集中的 ... -
14 行为模式 - 观察者(Observer)模式
2012-08-09 10:27 8081.用意 观察者模式定义了一种一对多的依赖关系,让多个观察者 ... -
13 行为模式 - 模板方法(Template Method)模式
2012-08-09 10:21 6911.用意 准备一个抽象类,将部分逻辑以具体方法以及具体构造子 ... -
12 行为模式 - 策略(Strategy)模式
2012-08-07 10:00 7241.用意 针对一组算法,将每一个算法封装到具有共同接口的 ... -
11 结构模式 - 桥梁(Bridge)模式
2012-08-01 10:01 7371.用意 2.类图 3.代码 z 1.用意 将 ... -
10 结构模式 - 门面(Facade)模式
2012-07-31 13:52 6851.含义 外部与一个子系统的通信必须通过一个统一的门面对象进 ... -
8 代理(Proxy)模式
2012-07-31 09:48 8981.含义 代理模式给某一个对象提供一个代理对象,并由代理对象 ... -
7 装饰(Decorator)模式
2012-07-27 14:03 7021.含义 装饰模式又名包装(Wrapper)模式,以对客户端 ... -
6 合成(Composite)模式
2012-07-27 14:02 7711.含义 合成模式把部分和整体的关系用树结构表示出来。合成模 ... -
5 适配器(Adapter)模式
2012-07-27 13:52 7381. 含义 把一个类的接口变换成客户端所期待的另一种接口,从 ... -
4 原始模型(Prototype)模式
2012-07-27 10:49 7961. 含义 通过给出一个原型对象来指明所要创建的对象的类型, ... -
3 建造(Builder)模式
2012-07-27 09:44 7141.含义:建造模式可以将一个产品的内部表象与产品的生成过程分割 ... -
1 抽象工厂(Abstract Factory)模式
2012-07-26 17:54 7381.类图 2.类 Creator ...
相关推荐
c++设计模式-结构型模式-享元模式;qt工程;c++简单源码; 享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类...
设计模式-享元模式 设计模式是软件设计中的一种解决方案,旨在提高代码的可维护性、灵活性和可重用性。享元模式(Flyweight Pattern)是结构型模式的一种,主要用于减少大量相似对象的内存占用,提高系统的性能和...
享元模式(Flyweight Pattern)是一种结构型设计模式,用于减少创建大量小对象所带来的内存开销。通过共享对象,享元模式能够有效地支持大量细粒度的对象,减少内存使用并提高性能。它常用于需要大量重复对象的场景...
享元模式是一种优化资源使用的软件设计模式,尤其适用于对象创建成本较高或系统内存有限的场景。在Java编程中,享元模式通过共享已有对象来减少内存中的对象数量,从而提高性能。这种模式的核心是实现细粒度对象的...
享元模式(Flyweight Pattern)是一种结构型设计模式,它能有效地减少系统中对象的数量,从而降低内存消耗,提高性能。这种模式通过共享大量相似对象的内部状态来达到这一目标,而只保留对象的外部状态在外部管理。...
享元模式(Flyweight Pattern)是软件设计中的一种结构型设计模式,它通过共享技术来支持大量细粒度的对象,以此来降低内存中对象的数量。在PHP中实现享元模式,可以帮助我们优化程序性能,特别是在对象数目过多时,...
享元模式是设计模式中的一种结构型模式,它主要通过共享已有对象来减少内存中对象的数量,从而提高系统性能。在C#编程中,享元模式尤其适用于那些创建大量相似对象且内存消耗较大的场景。本篇文章将深入探讨享元模式...
享元模式是面向对象设计中的一种结构型模式,它的主要目的是通过共享大量相似对象来减少内存的使用,提高系统的性能。在C#编程语言中,我们可以利用享元模式来优化那些具有大量实例但大部分状态可以共享的对象。在这...
享元模式是软件设计模式中的一种结构型模式,它的主要目的是通过共享大量细粒度对象来减少内存的使用,提高系统性能。在许多场景下,尤其是处理大量相似对象时,享元模式能显著减少内存开销。这个压缩包文件...
享元模式是一种结构型设计模式,它通过共享已有对象来减少内存中对象的数量,从而达到提高系统性能的目的。在大型软件系统中,特别是在处理大量相似对象时,享元模式能够有效地减少内存开销,提高系统运行效率。在这...
6共享元模式(Flyweight) 用意:以共享的方式高效地支持大量的细粒度对象
享元模式是软件设计模式中的一种结构型模式,它的主要目的是为了提高性能,尤其是在大量对象创建时。享元模式通过共享已有对象来减少内存中对象的数量,从而达到降低内存消耗的效果。这种模式适用于那些轻量级对象,...
#### 二、享元模式的基本结构 享元模式的核心在于通过共享技术来有效地支持大量细粒度的对象。它通常包含以下几个组成部分: 1. **抽象享元角色(Flyweight)**:定义一个接口,用于具体享元类继承或实现。它负责...
C++设计模式之享元模式(Flyweight)是一种结构型设计模式,主要用于解决大量相似对象的创建和操作所带来的内存负载问题。该模式的主要设计目标是通过共享对象来减少内存负载,提高系统的性能。 享元模式顾名思义...
"Flyweight"(享元)设计模式是一种结构型模式,其核心目的是为了有效地支持大量细粒度对象的创建和使用,通过共享已经存在的对象来减少内存消耗,提高系统性能。在C#中,Flyweight模式尤其适用于那些内部状态可共享...
享元模式通常与Flyweight接口、Concrete Flyweight(具体享元)、Flyweight Factory(享元工厂)三个角色一起工作,工厂负责创建和管理享元对象,确保享元对象的复用,避免因创建过多的实例导致内存开销过大。...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第12节:结构型模式Flyweight享元模式
享元模式是软件设计模式中的一种结构型模式,它的核心思想是通过共享已经存在的对象来减少内存中的对象数量,从而提高系统性能。在Java中,享元模式常用于处理大量相似对象的场景,例如在图形界面中绘制大量相似的...