`
kang
  • 浏览: 474330 次
  • 性别: 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
分享到:
评论

相关推荐

    c++-设计模式之享元模式(Flyweight)

    享元模式(Flyweight Pattern)是一种结构型设计模式,用于减少创建大量小对象所带来的内存开销。通过共享对象,享元模式能够有效地支持大量细粒度的对象,减少内存使用并提高性能。它常用于需要大量重复对象的场景...

    享元模式flyweight

    享元模式(Flyweight Pattern)是一种结构型设计模式,它能有效地减少系统中对象的数量,从而降低内存消耗,提高性能。这种模式通过共享大量相似对象的内部状态来达到这一目标,而只保留对象的外部状态在外部管理。...

    设计模式(C#)之享元模式(Flyweight Pattern)

    享元模式是设计模式中的一种结构型模式,它主要通过共享已有对象来减少内存中对象的数量,从而提高系统性能。在C#编程中,享元模式尤其适用于那些创建大量相似对象且内存消耗较大的场景。本篇文章将深入探讨享元模式...

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

    享元模式是面向对象设计中的一种结构型模式,它的主要目的是通过共享大量相似对象来减少内存的使用,提高系统的性能。在C#编程语言中,我们可以利用享元模式来优化那些具有大量实例但大部分状态可以共享的对象。在这...

    C#设计模式之Flyweight

    "Flyweight"(享元)设计模式是一种结构型模式,其核心目的是为了有效地支持大量细粒度对象的创建和使用,通过共享已经存在的对象来减少内存消耗,提高系统性能。在C#中,Flyweight模式尤其适用于那些内部状态可共享...

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

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

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

    享元模式(Flyweight Pattern)是软件设计中的一种结构型设计模式,它通过共享技术来支持大量细粒度的对象,以此来降低内存中对象的数量。在PHP中实现享元模式,可以帮助我们优化程序性能,特别是在对象数目过多时,...

    设计模式之享元模式

    享元模式是软件设计模式中的一种结构型模式,它的主要目的是为了提高性能,尤其是在大量对象创建时。享元模式通过共享已有对象来减少内存中对象的数量,从而达到降低内存消耗的效果。这种模式适用于那些轻量级对象,...

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

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

    C++设计模式之享元模式(Flyweight)

    C++设计模式之享元模式(Flyweight)是一种结构型设计模式,主要用于解决大量相似对象的创建和操作所带来的内存负载问题。该模式的主要设计目标是通过共享对象来减少内存负载,提高系统的性能。 享元模式顾名思义...

    设计模式的享元模式的例子

    享元模式是软件设计模式中的一种结构型模式,它的主要目的是通过共享大量细粒度对象来减少内存的使用,提高系统性能。在许多场景下,尤其是处理大量相似对象时,享元模式能显著减少内存开销。这个压缩包文件...

    Java设计模式之享元模式

    享元模式是软件设计模式中的一种结构型模式,它的核心思想是通过共享已经存在的对象来减少内存中的对象数量,从而提高系统性能。在Java中,享元模式常用于处理大量相似对象的场景,例如在图形界面中绘制大量相似的...

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

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

    C++设计模式课件13_Flyweight_享元模式.pdf

    ### C++设计模式之享元模式详解 #### 一、享元模式概述 享元模式(Flyweight Pattern)是设计模式中的一种优化模式,主要用于减少创建大量相似对象所需的内存消耗。在C++程序设计中,当系统中存在大量的相同或相似...

    FlyWeight享元

    享元模式是一种设计模式,属于对象结构型模式,它的核心思想是通过共享大量细粒度对象来减少系统内存的使用,提高系统性能。在软件工程中,当系统中存在大量相似对象时,享元模式可以有效地减少内存开销,尤其在处理...

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

    同时,享元工厂可以通过哈希表或者其他数据结构来高效地查找和复用已存在的享元对象。 总之,享元模式是面向对象设计中的一种策略,它通过对象的共享来减少内存消耗,尤其适用于需要大量细粒度对象的场景。理解和...

    6.设计模式-享元模式1

    享元模式(Flyweight Pattern)是结构型模式的一种,主要用于减少大量相似对象的内存占用,提高系统的性能和效率。 模式定义 享元模式的定义是:运用共享技术有效地支持大量细粒度的对象。该模式将一个对象的状态...

Global site tag (gtag.js) - Google Analytics