java常用设计模式-享元模式实现方式

java常用设计模式-享元模式实现方式

ID:12990452

大小:31.00 KB

页数:4页

时间:2018-07-20

java常用设计模式-享元模式实现方式_第1页
java常用设计模式-享元模式实现方式_第2页
java常用设计模式-享元模式实现方式_第3页
java常用设计模式-享元模式实现方式_第4页
资源描述:

《java常用设计模式-享元模式实现方式》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Flyweight(享元模式)模式是比较常用的一个模式。Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度.应用场合很多:比如你要从一个数据库中读取一系列字符串,这些字符串中有许多是重复的,那么我们可以将这些字符串储存在Flyweight池(pool)中.定义:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。设计初衷:

2、面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以被共享的类,另外,还有一些特性是取决于应用(context),是不可共享的.在此以咖啡外卖店为例写了4个java类来描述说明Flyweight设计模式的实现方式;客户买咖啡下订单,订单只区分咖啡口味,如果下了1W个订单,而咖啡店只卖20种口味的咖啡,那么我们就没有必要生成1W个订单对象,通过享元模式我们只需要生成20个订单对象。这个例子举的不太好

3、,但足以说明问题。下面是具体的代码。1、Order.java订单抽象类2、FlavorOrder.java订单实现类3、FlavorFactory.java订单生成工厂4、Client.java客户类、带有main方法的测试类===============1、Order.javapackageflyweight;publicabstractclassOrder{//执行卖出动作publicabstractvoidsell();//获取咖啡口味publicabstractStringgetFlavor();}===============1end===============2、Flavo

4、rOrder.javapackageflyweight;publicclassFlavorOrderextendsOrder{privateStringflavor;publicFlavorOrder(Stringflavor){this.flavor=flavor;}publicStringgetFlavor(){returnthis.flavor;}publicvoidsell(){System.out.println("卖出一杯["+flavor+"]。");}}===============2end===============3、FlavorFactory.javapackag

5、eflyweight;importjava.util.HashMap;importjava.util.Map;publicclassFlavorFactory{//订单池privateMapflavorPool=newHashMap(20);//静态工厂,负责生成订单对象privatestaticFlavorFactoryflavorFactory=newFlavorFactory();privateFlavorFactory(){}publicstaticFlavorFactorygetInstance(){returnflavo

6、rFactory;}//获得订单publicOrdergetOrder(Stringflavor){Orderorder=null;if(flavorPool.containsKey(flavor)){order=flavorPool.get(flavor);}else{//获得新口味订单order=newFlavorOrder(flavor);//放入对象池flavorPool.put(flavor,order);}returnorder;}//获得已经卖出的咖啡全部口味数量publicintgetTotalFlavorsMade(){returnflavorPool.size();}

7、}===============3end===============4、Client.javapackageflyweight;importjava.util.ArrayList;importjava.util.List;publicclassClient{//客户下的订单privatestaticListorders=newArrayList(100);//订单对象生成工厂privatestaticF

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。