`

Flyweight design pattern

阅读更多
Flyweight定义:
避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类).

为什么使用?
面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以被共享的类,另外,还有一些特性是取决于应用(context),是不可共享的,这也Flyweight中两个重要概念内部状态intrinsic和外部状态extrinsic之分.

说白点,就是先捏一个的原始模型,然后随着不同场合和环境,再产生各具特征的具体模型,很显然,在这里需要产生不同的新对象,所以Flyweight模式中常出现Factory模式.Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个Flyweight pool(模式池)来存放内部状态的对象.

Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度.应用场合很多:比如你要从一个数据库中读取一系列字符串,这些字符串中有许多是重复的,那么我们可以将这些字符串储存在Flyweight池(pool)中.

public class Artist{
  	private String name;
	public Artist(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
}

public class ArtistFactory{
	Hashtable hashtable = new Hashtable();
	public Artist getArtist(String key){
		Artist result = (Artist) hashtable .get(key);
		if(result == null){
			result = new Artist(key);
			hashtable .put(key, result);
		}
		return result;
	}
}
分享到:
评论

相关推荐

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm”供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成...

    Head First Design Pattern

    2. 结构型设计模式:包括适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式(Flyweight)。这些模式关注如何将类和...

    Design Pattern 简明手册

    ### Design Pattern 简明手册知识点详述 #### 一、接口型(interface)模式 **1. Adapter(适配器模式)** - **定义**:允许一个类接口与另一个不兼容的类接口协同工作。 - **分类**: - **继承型Adapter**:通过...

    designpattern.zip

    本资源"designpattern.zip"包含了对Java中23种经典设计模式的详细讲解和代码实例,对于中高级Java工程师来说,是提升开发技能的必备学习材料。 设计模式通常分为创建型、结构型和行为型三大类。创建型设计模式关注...

    JAVA software design pattern

    11. **享元模式(Flyweight)**:通过共享技术,有效地支持大量细粒度的对象,减少内存占用。 12. **命令模式(Command)**:将请求封装为一个对象,以便使用不同的请求、队列请求、或者记录请求日志。 13. **解释...

    Gof design pattern 中文/英文版+web+学习笔记

    11. **享元模式(Flyweight)**:运用共享技术有效地支持大量细粒度的对象,减少内存占用。 12. **责任链模式(Chain of Responsibility)**:避免将处理逻辑硬编码在一个对象中,而是让多个对象都有机会处理请求。...

    design pattern PPT

    设计模式(Design Pattern)是软件工程中用于解决软件设计问题的既定方案。设计模式并非直接的代码实现,而是一套被验证过的通用解决方案模板。它们是由经验丰富的软件开发者总结出的,在特定上下文中对常见问题的...

    Design Pattern In c#

    《Design Pattern In C#》是一本深入探讨设计模式的书籍,专为使用C#编程语言的开发者准备。设计模式是软件工程中经过实践验证的、解决常见问题的有效方法,是经验丰富的开发者的智慧结晶。这本书以英文撰写,以其...

    Head First design pattern非扫描版原生版

    15. **享元模式(Flyweight)**:享元模式通过共享大量细粒度对象,有效支持大量对象的实例,减少内存消耗。它常用于图形渲染、文本处理等场景。 以上内容只是《Head First设计模式》一书的部分精华,书中还涵盖了...

    DesignPattern.rar

    这个"DesignPattern.rar"压缩包很可能是为了帮助应届毕业生和正在学习设计模式的开发者提供一套全面的资源。设计模式并不是一种具体的代码或库,而是经验丰富的开发者们在多年实践中总结出的通用解决方案的描述。 ...

    ext初级入门

    享元模式(Flyweight Design Pattern)在这里起到了关键作用,它允许高效地重复使用对象,而不会消耗大量内存。 3. **Ext.getDom**:这个函数直接根据ID或DOM节点获取DOM元素。例如,`Ext.getDom('elId')`用于通过...

    C++11全套设计模式-23种指针的用法(a full DesignPattern -DesignPattern.zip

    本资料包“DesignPattern - DesignPattern.zip”提供了对C++11中23种设计模式的全面讲解,特别是结合指针使用的部分,以下是对这些知识点的详细阐述: 1. **单例模式(Singleton)**:确保一个类只有一个实例,并...

    Design.Patterns.Explained.Simply

    Flyweight Private Class Data Proxy Behavioral patterns Chain of Responsibility Command Interpreter Iterator Mediator Memento Null Object Observer State Strategy Template Method Visitor

    JAVA design pattern-java设计模式

    在这个名为"JAVA design pattern-java设计模式"的CHM文件中,我们可能找到了关于如何在Java开发中应用设计模式的详细信息。 设计模式通常分为三大类:创建型、结构型和行为型。创建型模式关注对象的创建,如单例...

    java设计模式详解,java design pattern

    4. 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象。 5. 外观模式(Facade Pattern):为子系统中的一组接口提供一个统一的界面,定义一个高层接口,让子系统更容易使用。 6. 桥接模式...

    Design Pattern Framework 4.0 CS

    总的来说,Design Pattern Framework 4.0 CS是一份宝贵的参考资料,它将帮助C#开发者更好地理解和应用设计模式,提升代码质量,优化系统架构,从而提高开发效率和软件的可维护性。对于学习和实践设计模式的开发者来...

    DoFactory Design Pattern Framework 3.5 C#

    总的来说,DoFactory Design Pattern Framework 3.5 C#是C#开发者学习和应用设计模式的强大工具,它将设计模式的理论知识与实际开发紧密结合,有助于提升开发者的专业技能和软件设计能力。无论是初学者还是经验丰富...

Global site tag (gtag.js) - Google Analytics