`
darezhong
  • 浏览: 9156 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计模式学习之享元模式

阅读更多

享元模式:运用共享技术有效地支持大量细粒度的对象。主要用于避免大量非常相似类的开销。在很多程序设计中,有时需要生成大量细粒度的类实例来表示数据,这时候可以采用享元模式来共享这些类实例,从而减少这些实例的数量。

 

代码示例:

享元抽象类:
package DesignPattern.FlyweightPattern;

public abstract class Flyweight {

	public abstract void Operate(int i);
}

 

具体享元类:
package DesignPattern.FlyweightPattern;

public class ConcreateFlyweight extends Flyweight {

	@Override
	public void Operate(int i) {
		// TODO Auto-generated method stub
		System.out.println("具体享元:" + i);
	}
}

 

享元抽象类:
package DesignPattern.FlyweightPattern;

import java.util.Hashtable;

public class FlyweightFactory {

	private Hashtable flyWeights = new Hashtable();
	
	public FlyweightFactory() {
		this.flyWeights.put("A", new ConcreateFlyweight());
		this.flyWeights.put("B", new ConcreateFlyweight());
		this.flyWeights.put("C", new ConcreateFlyweight());
	}
	
	public Flyweight getFlyweight(String key) {
		return (Flyweight) flyWeights.get(key);
	}
}

 

主控程序类:
package DesignPattern.FlyweightPattern;

public class Client {

	public static void main(String[] args) {
		int i = 1;
		FlyweightFactory factory = new FlyweightFactory();
		Flyweight fly1 = factory.getFlyweight("A");
		fly1.Operate(++i);
		Flyweight fly2 = factory.getFlyweight("B");
		fly2.Operate(++i);
		Flyweight fly3 = factory.getFlyweight("C");
		fly3.Operate(++i);
		Flyweight fly4 = factory.getFlyweight("B");
		fly4.Operate(++i);
		Flyweight fly5 = factory.getFlyweight("B");
		fly5.Operate(++i);
		Flyweight fly6 = factory.getFlyweight("B");
		fly6.Operate(++i);
	}
}

  

分享到:
评论

相关推荐

    设计模式学习笔记--Flyweight享元模式.docx

    享元模式是一种设计模式,属于构造型模式,其主要目的是减少对象的数量,通过共享大量相似对象的内部状态来节省内存。这种模式在处理大量细粒度对象时特别有用,能够有效地提高系统的性能。 享元模式的核心是...

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

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

    设计模式之享元模式

    享元模式是一种结构型设计模式,它通过共享技术来有效支持大量细粒度对象的复用,从而减少系统中对象的数量,降低系统的内存消耗。在软件工程中,当我们需要创建大量相似但略有差异的对象时,享元模式可以提供一种...

    设计模式之美——教你写出高质量代码

    "设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...

    设计模式学习报告

    ### 设计模式学习报告 #### 一、设计模式概述 设计模式是一种被广泛接受和使用的编程解决方案,旨在解决软件设计中的常见问题。它不仅能够帮助开发者编写出更易于理解和维护的代码,还能够促进代码的复用性。设计...

    设计模式学习笔记总结

    这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...

    设计模式享元模式PPT学习教案.pptx

    享元模式是一种设计模式,属于对象行为型模式,它的主要目的是减少系统中对象的数量,以提高性能和降低内存消耗。这种模式特别适用于那些细粒度的对象,比如在文本编辑器中,同一字符可能会频繁出现,如果为每个字符...

    享元模式代码示例

    享元模式是一种结构型设计模式,它通过共享已有对象来减少内存中对象的数量,从而达到降低内存占用的目的。在面向对象编程中,当系统需要创建大量相似对象时,享元模式能够有效地提升性能,因为大部分对象是重复的,...

    24种设计模式以及混合设计模式

    通过学习和应用这些设计模式,开发者不仅可以提高代码的可读性、可维护性和可扩展性,还能提升团队间的沟通效率,因为设计模式是软件工程中的通用语言。对于任何有志于提升软件开发水平的人来说,理解和掌握设计模式...

    设计模式学习.zip

    本资源"设计模式学习.zip"聚焦于C++编程语言中的设计模式应用,是2017年的一次黑马程序员培训课程的配套代码,旨在帮助学习者通过实际的代码示例来理解和掌握设计模式。 在C++中,设计模式主要分为三大类:创建型...

    设计模式学习笔记大全

    以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...

    Android享元模式Demo

    总之,通过学习和实践"Android享元模式Demo",我们可以深入理解享元模式的原理和实现方式,将这种设计模式运用到Android项目中,优化资源管理,提升应用性能。在处理大量相似对象时,享元模式不失为一个优秀的解决...

    设计模式学习资料

    "设计模式学习资料"包含了对设计模式的深入理解和应用方法,旨在帮助开发者提高软件设计的质量和可维护性。设计模式通常分为三类:创建型、结构型和行为型模式。 创建型模式关注对象的创建过程,如单例模式确保一个...

    新版设计模式手册 - C#设计模式(第二版)

    总之,《新版设计模式手册 - C#设计模式(第二版)》是学习和掌握C#设计模式的宝贵资源,通过学习和实践书中的内容,开发者能够提升软件设计能力,编写出更优雅、可维护的代码。这本书将帮助你从一个代码实现者成长为...

    设计模式学习经典篇之菜鸟篇

    本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...

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

    享元模式是软件设计模式中的一种结构型模式,它的主要目的是为了提高性能,尤其是在大量对象创建时。在享元模式中,系统会共享那些具有大量相同状态的对象,从而减少内存中对象的数量,达到节省内存的目的。Java作为...

    《Java设计模式》刘伟 课后习题及模拟试题答案.rar

    这本书的课后习题和模拟试题旨在帮助读者巩固学习内容,加深对设计模式的理解,提升实际编程能力。 课后习题参考答案部分涵盖了书中各个章节的关键知识点,包括创建型模式(如单例模式、工厂方法模式、抽象工厂模式...

Global site tag (gtag.js) - Google Analytics