`
kang
  • 浏览: 465105 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

结构模式之享元模式Flyweight

 
阅读更多

目的:避免大量拥有相同内容的小类的开销(耗费内存),使大家共享一个类(元类)对象。

加快程序运行速度,提高程序效率与性能。

 

适用场合:有很多可能会重复的小对象(即享元多而小,并且经常会使用,但是无法估计使用哪一个)

 

 

说明:下面的例子程序讲的是在字处理应用中使用享元模式

 

package com.javaeye.kang.flyweight;

 

import java.util.HashMap;

 

/**

  * 享元模式

  *

  */

 

// 写享元

class Word {

      private String key ;

      private String content ;

      public Word(String key, String content) {

            System. out .println( " 构造函数被 " );

            this . key = key;

            this . content = content;

      }

}

 

// 使用池来管理享元,可以将享元用 HashMap 来存

class WordPool {

      private static HashMap pool = new HashMap();

      public static Word getWord(String key, String content) {

            // 尝试 key 从池中拿

            Word word = (Word) pool .get(key);

            if (word == null ) {

                  // 在池中 没有 象, 一个 象,放入池中

                  word = new Word(key,content);

                  pool .put(key, word);

            }

            // 个字 象返回

            return word;

      }

}

 

//

public class FlyWeightTest {

      public static void main(String[] args) {

            // 5 句,只 3 次构造函数,前 3 句是向池中放 new 出来的

            // 2 句是直接从池中拿出已有的

            Word word1 = WordPool.getWord ( "001" , " " );

            Word word2 = WordPool.getWord ( "002" , " 李四 " );

            Word word3 = WordPool.getWord ( "003" , " 王五 " );

            Word word4 = WordPool.getWord ( "001" , " " );

            Word word5 = WordPool.getWord ( "002" , " 李四 " );

      }

}

 

测试结果:

构造函数被

构造函数被

构造函数被

 

 

 

  • 描述: 享元模式
  • 大小: 90.8 KB
  • 描述: 享元模式要点
  • 大小: 89 KB
  • 描述: 享元模式小结
  • 大小: 86.9 KB
分享到:
评论

相关推荐

    结构型模式之共享元模式(Flyweight)

    6共享元模式(Flyweight) 用意:以共享的方式高效地支持大量的细粒度对象

    C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) (Level 300)

    C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) (Level 300)

    C#面向对象设计模式纵横谈\12 结构型模式Flyweight享元模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第12节:结构型模式Flyweight享元模式

    C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式)

    C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式)

    享元模式 Flyweight Pattern

    享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

    C++设计模式编程之Flyweight享元模式结构详解

    主要介绍了C++设计模式编程的Flyweight享元模式结构,享元模式在实现过程中主要是要为共享对象提供一个存放的"仓库"(对象池),需要的朋友可以参考下

    FlyWeight享元

    FlyWeight享元 --- 对象结构型模式

    c++设计模式-结构型模式-享元模式

    c++设计模式-结构型模式-享元模式;qt工程;c++简单源码; 享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类...

    C++ Flyweight模式

    23种设计模式之十(结构型模式)Flyweight模式

    学习php设计模式 php实现享元模式(flyweight)

    二、享元模式结构图 三、享元模式中主要角色 抽象享元(Flyweight)角色:此角色是所有的具体享元类的超类,为这些类规定出需要实现的公共接口。那些需要外蕴状态的操作可以通过调用商业以参数形式传入 具体享元...

    JAVA设计模式chm文档

    设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy...

    设计模式文档 chm

    设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy...

    JAVA设计模式之结构模式

    这是JAVA设计模式中属于结构模式的部分,包括Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade (外观模式)的源代码。其中有些模式中...

    详解Java设计模式编程中的Flyweight享元模式的开发结构

    主要介绍了Java设计模式编程中的Flyweight享元模式的开发结构,享元模式能够最大限度地重用现有的同类对象,需要的朋友可以参考下

    GoF 23种设计模式的详解与应用

    结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite(组合),设计模式之Decorator(油漆工),设计模式之Bridge,设计模式之Flyweight(享元). 行为模式:设计模式之...

    C#设计模式_设计模式_C#_

    享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. ...

    用Java实现23种设计模式

    享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式...

    C#面向对象设计模式纵横谈(视频与源码)

    C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) ...

    23种设计模式 (创建型,结构型,行为型)

    享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern...

Global site tag (gtag.js) - Google Analytics