`

设计模式之轻量级Flyweight

 
阅读更多
轻量级模式实现对象的共享,从而减少内存分配的开销。该模式通常和工厂模式一起使用。



Flyweight的目的是为了减少内存的消耗而出现的一种模式。因此他是一种解决实现问题的模式,而不是用来解决建模问题的。



Flyweight享元设计模式是一种结构型设计模式,它主要解决的问题是:由于(同类)对象的数量太大,采用面向对象时给系统带来了难以承受的内存开销。



Flyweight模式的几个要点:
      1、面向对象很好的解决了抽象性的问题,但是作为一个运行在机器中的程序实体,我们需要考虑对象的代价问题。Flyweight设计模式主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题。
     

      2、Flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的内存压力。在具体实现方面,要注意对象的状态处理。






Java代码 
1.public class FlyweightFactory{   
2.  private Hashtable flyweights = new Hashtable();   
3. 
4.  public Flyweight getFlyweight(String key ){   
5.    Flyweight flyweight = (Flyweight) flyweights.get(key);   
6. 
7.    if(flyweight == null){  
8.      flyweight = new ConcreteFlyweight();   
9.      flyweights.put(key, flyweight);   
10.    }   
11. 
12.    return flyweight;   
13.  }   
14.} 
分享到:
评论

相关推荐

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

    享元模式是一种轻量级的内存优化策略,其核心思想是区分内部状态和外部状态。内部状态是对象可以共享的部分,不随环境改变而变化;外部状态是对象状态的一部分,但与对象的身份无关,可以由客户端自行管理。享元模式...

    C#3.0设计模式.pdf

    通过对结构型设计模式如装饰器、代理、桥接、复合及轻量级模式的学习,读者不仅可以提升自己的编程技能,还能更好地理解如何构建高质量的软件系统。此外,本书还提供了丰富的示例和详细的比较分析,使读者能够更加...

    C#设计模式 设计模式 架构设计

    2. 微服务架构:将单一应用程序划分为一组小的服务,每个服务运行在其自己的进程中,服务之间通过轻量级机制通信,如HTTP RESTful API。 3. MVC(Model-View-Controller)架构模式:用于分离用户界面、业务逻辑和...

    设计模式之享元模式

    这种模式适用于那些轻量级对象,它们的大部分状态可以外部化,也就是说,这些状态可以通过客户端代码来控制,而不是在对象内部存储。 享元模式的核心概念是“享元对象”(Flyweight),它是一种可共享的对象,能被...

    设计模式源码及其下载地址

    6. 享元模式(Flyweight):减少大量相似对象的创建,通过共享实现轻量级表示。 7. 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 行为型设计模式关注对象之间的责任分配,常见的有: 1. ...

    C#23种设计模式_示例源代码及PDF

    享元模式:FLYWEIGHT 在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量 享元模式 的细粒度对象。 享元模式能做到共享的关键是区分内蕴状态和外蕴状态。 内蕴状态存储在享 元内 部,不会随环境的改变而...

    设计模式精解-GoF23种设计模式解析附C实现

    - 实现案例:在C语言中可以通过缓存和引用计数机制来实现轻量级对象的复用。 6. **Facade模式**:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 ...

    23设计模式简讲

    - **场景解析**:假设需要向多位MM发送同样的情书,为了避免重复劳动,可以制作一个情书的“轻量级版本”,即保留共性的内容(如开头、结尾),而将个性化的内容(如称呼)作为外部状态注入。这样既能节省资源,又...

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

    特别是对于大量轻量级(细粒度)的对象,比如在文档编辑器的设计过程中,我们如果为没有字母创建一个对象的话,系统可能会因为大量的对象而造成存储开销的浪费。例如一个字母”a”在文档中出现了100000 次,而实际上...

    设计模式.docx

    传输对象模式通过在客户端和服务器之间传送轻量级的对象,以减少网络传输的数据量。这种模式适用于需要在分布式环境中高效传输数据的情况。 以上所述的设计模式不仅限于 Java 语言,它们是面向对象编程领域中的通用...

    java设计模式

    4. **享元模式(Flyweight)**:享元模式是一种轻量级的内存优化技术,通过共享大量的细粒度对象,减少内存中对象的数量,从而降低系统的内存消耗。它通常适用于那些创建大量相似对象的场景,如文本渲染、图形渲染等。...

    C# 23种设计模式代码

    在C#中,可以用于缓存大量轻量级对象。 12. 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。C#中的远程代理、虚拟代理等都是其应用。 13. 模板方法模式(Template Method):定义一个操作中的...

    实验九:享元模式.rar之java设计模式

    - **享元对象**:享元对象是核心,它应该被设计为轻量级,且能够被共享。 - **享元工厂**:工厂是创建和管理享元对象的地方,它负责维护一个享元池,提供对象的获取和复用。 - **内部状态和外部状态**:内部状态是...

    软件工程复习题

    #### 2.7 轻量级模式 - **定义**:通常指的是使用共享技术来支持大量细粒度对象的模式。 - **示例**:享元模式(Flyweight Pattern)。 #### 2.8 责任链模式 - **定义**:使多个对象都有机会处理请求,避免请求的...

    追MM与JAVA的23种设计模式

    轻量级模式:在面向对象设计中,为了减少创建对象的数量,从而减少系统内存占用和提高效率,Flyweight 模式将大量类似的对象抽象为少数几个共享对象,通过共享技术实现相同对象的多次使用。 12、PROXY—约会前,先...

    享元模式代码+文档

    在软件工程中,当一个系统需要处理大量相似对象时,享元模式能够有效地提升性能,尤其在处理轻量级对象时效果显著。 享元模式的核心是享元对象(Flyweight),它是一个可以被共享的类,通常包含一些共享状态...

    享元模式代码示例

    此模式特别适用于那些轻量级对象,如字符串、符号等。 享元模式的核心在于一个“享元工厂”,这个工厂负责创建和管理享元对象。享元对象分为两类:内部状态和外部状态。内部状态是可以共享的,不随环境改变而改变,...

Global site tag (gtag.js) - Google Analytics