`
knight_black_bob
  • 浏览: 823175 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式 之 享元模式

阅读更多

下载 23种设计模式源码 :http://download.csdn.net/download/knight_black_bob/8936043

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


创建型模式,共五种:
工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模式

结构型模式,共七种:
适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式

行为型模式,共十一种:
策略模式 模板方法模式 观察者模式 迭代子模式 责任链模式 命令模式

备忘录模式 状态模式 访问者模式 中介者模式 解释器模式

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

package 设计模式.享元模式;

public abstract class Order {
	abstract void  sell();
}

 

package 设计模式.享元模式;

public class DishOrder extends Order {

	private String name ;
	public DishOrder(String name) {
		this.name = name;
	}
	@Override
	void sell() { 
		System.out.println(" 外卖 "+ name+ " 一份   " );
	}

}

 

 

package 设计模式.享元模式;

import java.util.concurrent.ConcurrentHashMap;

public class DishFactory {

	private static ConcurrentHashMap<String,Order> map=  new ConcurrentHashMap<String,Order>();	
	
	public static Order getInstance(String name){
		Order order = map.get(name);
		if (order == null) {
			order = new  DishOrder(name);
			order = map.putIfAbsent(name, order);
		}
		return  map.get(name);
	}
	
	public  static int getMapSize(){
		return map.size();
	}
	
}

 

package 设计模式.享元模式;

import java.util.ArrayList;
import java.util.List;

//在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象
//数据库连接池,线程池等即是用享元模式的应用
//String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的
public class FlyweightTest {

	private  static List <Order> list = new ArrayList<Order>();
	
	public static void main(String[] args) {
		FlyweightTest client = new FlyweightTest();
		
		client.setOrder("西红柿炒鸡蛋");
		client.setOrder("肉末茄子");
		client.setOrder("宫保鸡丁");
		client.setOrder("宫保鸡丁");
		client.setOrder("宫保鸡丁");
		client.setOrder("红烧肉");
		client.setOrder("西红柿炒鸡蛋");
		
		for (int i = 0; i < list.size(); i++) {
			list.get(i).sell();
		}
		
		System.out.println("点餐  了  : " + list.size()+" 份");
		System.out.println("对象 数 : " +DishFactory.getMapSize()+" --");
		
	}
	
	public  void setOrder(String name){
		list.add(DishFactory.getInstance(name));
	}
	
	
	
}

 

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

  • 大小: 7.4 KB
5
2
分享到:
评论

相关推荐

    设计模式之享元模式

    设计模式之享元模式的两种实现方式——单纯享元模式和复合享元模式,已经各种的UML类设计图

    Java设计模式之享元模式

    设计模式之享元模式 设计模式之享元模式 设计模式之享元模式

    设计模式之享元模式1

    设计模式之享元模式1

    23钟设计模式之享元模式

    23种设计模式之享元模式对享元模式进行了简单的介绍,并附带了例子程序,和大家分享

    Python设计模式之享元模式原理与用法实例分析

    本文实例讲述了Python设计模式之享元模式原理与用法。分享给大家供大家参考,具体如下: 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象. 下面是一个享元模式的demo: #!/usr/bin/env python...

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

    主要为大家详细介绍了C++设计模式之享元模式Flyweight,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Java设计模式之享元模式.docx

    享元即为分享元素,字符串常量池、数据库连接池、缓冲池都是是这个道理。该模式的意图为:运用共享技术有效地支持大量细粒度的对象。 就像上边的例子中,Integer类会把较小的数字保存起来,再次新建比较小的Integer...

    javascript 设计模式之享元模式原理与应用详解

    主要介绍了javascript 设计模式之享元模式,结合实例形式详细分析了javascript 设计模式之享元模式相关概念、原理、应用方法及操作注意事项,需要的朋友可以参考下

    JavaScript设计模式之享元模式实例详解

    本文实例讲述了JavaScript设计模式之享元模式。分享给大家供大家参考,具体如下: 通过两个例子的对比来凸显享元模式的特点:享元模式是一个为了提高性能(空间复杂度)的设计模式,享元模式可以避免大量非常相似类的...

    软件设计模式——享元模式设计报告

    用享元模式分析并实现一个具体案例。在一家咖啡店中客户每买一杯咖啡,咖啡制做系统就相应地创建该杯咖啡的配料表,并将其发送给店内的咖啡制做机,咖啡制做机接收到系统发送的配料表后便开始制造客户所买的咖啡。...

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

    设计模式的享元模式的例子,希望对大家有用~~~~~~~~

    Java设计模式之享元模式实例详解

    主要介绍了Java设计模式之享元模式,结合实例形式详细分析了享元模式的概念、功能、定义及使用方法,需要的朋友可以参考下

    C++设计模式之享元模式

    主要介绍了C++设计模式之享元模式,本文讲解了什么是享元模式、享元模式代码实例、享元模式的优点等内容,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics