登陆注册
8183300000090

第90章 5 咖啡外卖店

大B:“我就以咖啡外卖店写几个java类来描述说明Flyweight设计模式的实现方式吧。”

客户买咖啡下订单,订单只区分咖啡口味,如果下了1W个订单,而咖啡店只卖20种口味的咖啡,那么我们就没有必要生成1W个订单对象,通过享元模式我们只需要生成20个订单对象。

这个例子举的不太好,但足以说明问题。下面是具体的代码。

1、Order。java订单抽象类

2、FlavorOrder。java订单实现类

3、FlavorFactory。java订单生成工厂

4、Client。java客户类、带有main方法的测试类

……1、Order。java

package flyweight;

public abstract class Order{

//执行卖出动作

public abstract void sell();

//获取咖啡口味

public abstract String getFlavor();

}

……1 end

……2、FlavorOrder。java

package flyweight;

public class FlavorOrder extends Order{

private String flavor;

public FlavorOrder(String flavor){

this。flavor=flavor;

}

public String getFlavor(){

return this。flavor;

}

public void sell(){

System。out。println(“卖出一杯[” flavor “]。”);

}

}

……2 end

……3、FlavorFactory。java

package flyweight;

import java。util。HashMap;

import java。util。Map;

public class FlavorFactory{

//订单池

private Map《String,Order》flavorPool=new HashMap《String,Order》(20);

//静态工厂,负责生成订单对象

private static FlavorFactory flavorFactory=new FlavorFactory();

private FlavorFactory(){}

public static FlavorFactory getInstance(){

return flavorFactory;

}

//获得订单

public Order getOrder(String flavor){

Order order=null;

if(flavorPool。containsKey(flavor)){

order=flavorPool。get(flavor);

}else{

//获得新口味订单

order=new FlavorOrder(flavor);

//放入对象池

flavorPool。put(flavor,order);

}

return order;

}

//获得已经卖出的咖啡全部口味数量

public int getTotalFlavorsMade(){

return flavorPool。size();

}

}

……3 end

……4、Client。java

package flyweight;

import java。util。ArrayList;

import java。util。List;

public class Client{

//客户下的订单

private static List《Order》orders=new ArrayList《Order》(100);

//订单对象生成工厂

private static FlavorFactory flavorFactory;

//增加订单

private static void takeOrders(String flavor){

orders。add(flavorFactory。getOrder(flavor));

}

public static void main(String[]args){

//订单生成工厂

flavorFactory=FlavorFactory。getInstance();

//增加订单

takeOrders(“摩卡”);

takeOrders(“卡布奇诺”);

takeOrders(“香草星冰乐”);

takeOrders(“香草星冰乐”);

takeOrders(“拿铁”);

takeOrders(“卡布奇诺”);

takeOrders(“拿铁”);

takeOrders(“卡布奇诺”);

takeOrders(“摩卡”);

takeOrders(“香草星冰乐”);

takeOrders(“卡布奇诺”);

takeOrders(“摩卡”);

takeOrders(“香草星冰乐”);

takeOrders(“拿铁”);

takeOrders(“拿铁”);

//卖咖啡

for(Order order:orders){

order。sell();

}

//打印生成的订单java对象数量

System。out。println(“\n客户一共买了” orders。size() “杯咖啡!”);

//打印生成的订单java对象数量

System。out。println(“\n共生成了” flavorFactory。getTotalFlavorsMade() “个FlavorOrder java对象!”);

}

}

同类推荐
  • 如何处理电脑故障

    如何处理电脑故障

    本书以问答的方式介绍了电脑会出现的各种故障,内容包括了音箱声音失真,如何处理?如何做好电脑的日常维护等等问题。
  • 计算机与人工智能(科学新知丛书)

    计算机与人工智能(科学新知丛书)

    本书是专门为中小学生编写的科普读物。全书共分八个部分,分别就计算机诞生的历程,计算机的种类、构造、作用及其发展趋势等方面进行了详尽的论述,全书论述深入浅出,行文活泼流畅。为本书的主要读者——广大的中小学生朋友认识计算机、了解计算机和掌握计算机提供了一把钥匙,是新时期中小学生开展素质教育不可多得的科普读物,中小学生家长及教师阅读此书也能从中获得有益的启示和感悟。
  • 中文版3dsMax2010实例与操作

    中文版3dsMax2010实例与操作

    本书结合3dsMax2010的实际用途,按照系统、实用、易学、易用的原则,通过大量案例介绍了3dsMax2010的各项功能,内容涵盖3dsMax入门、创建和编辑二维图形、创建基本三维模型、使用修改器、网格建模、多边形建模、面片建模、复合建模、材质和贴图、灯光和摄影机、渲染、动画制作、粒子系统、空间扭曲和动力学等。
  • 中国移动智能手机的秘密

    中国移动智能手机的秘密

    《中国移动智能手机的秘密》是一本关于移动终端和移动互联网的科普书。作者将这18年通信行业中的学习、思考、实践积累成《中国移动智能手机的秘密》与大家分享。书本系统总结了手机的发展历史、TD产业界“从2G向3G演进”的移动终端产业分化重组进程、智能手机的使用方法用方法和应用指南,以及对移动互联网发展独特思考。
  • 下一代互联网

    下一代互联网

    本书系统介绍了下一代互联网的进展情况,包括下一代互联网的概念解析,国内外下一代互联网的最新发展情况,下一代互联网的关键技术进展,以及各国发展下一代互联网的政策计划。最后分析了下一代互联网对未来社会的影响,提出我国发展下一代互联网的政策建议等。全书共6章,包括互联网发展历史和现状,下一代互联网基本概念,下一代互联网研究最新进展,下一代互联网发展现状,我国发展下一代互联网现状,发展下一代互联网战略建议。
热门推荐
  • 改变80后女生的30堂人生课

    改变80后女生的30堂人生课

    本书剖析了80后女生面临的众多问题,为80后女生安排了解决这些问题的30堂课,包括“告别天真,成为一名知性熟女”;“留住美丽,让时光驻留在25岁”;“女人可以不美丽,但不能不智慧”;“80后女生的好人缘”;“80后女生做人做事,恰到好处”等。
  • 苍狼雄起

    苍狼雄起

    苍狼国本是一个民风淳朴,各大宗派和谐共处,百姓安居乐业,以狼为图腾的国家,过着自给自足,无忧无虑的日子,但因苍天无眼,天道不公,四季不定,冬季变长,寒潮不断,导致这里的每一个人为生存,为更好活着,和严寒、和风雪作抗争,什么战斗民族,全是被逼的,本是孤儿,确莫名成为了皇子,我不要当国君,为什么要送我去死,哼哈!这是一部家与国的血泪心酸史,且看我苍狼是如何雄起吧!
  • 小媳妇

    小媳妇

    原来媳妇不止是娶进来的,也可以是养出来的,赵素素就是赵家养的媳妇。赵妈说:媳妇还是家养的好,放心。赵妈又说:媳妇长大了可得看好,不小心飞走了,闹心。
  • 霸道总裁爱上我之我心悠悠

    霸道总裁爱上我之我心悠悠

    在一个繁华的大城市里面,一个没有高学历没有家庭背景,勉强糊口普普通通的小姑娘,在哪里能邂逅“高富帅”?是高档餐厅里?豪华游艇上?还是知名夜店中?不!不!不!这些都不对,事实的真相是在地铁上,没错,就是在顾悠悠上班的路线上,她遇到了自己的真命天子。她与他邂逅的原因,竟然是她玩的一款手机游戏…对了各位亲,文中描述的游戏是真实存在的哦~~感兴趣的亲可以去下载一下手机小游戏~~~本文温馨轻虐,爆笑诙谐,欢乐无限。介绍无力,敬请阅读。读者群:144610473PS:原谅简单粗暴的标题,这年头名字没槽点都不受关注啊~ToT
  • 老师拜托别放手

    老师拜托别放手

    在校外,她是个漫画大师,在校内她却又是个学霸,和一个学校里面最年轻的也是最帅的直男癌老师老师,但他和她相处了一段时间后,却变成了情话男老师。就这样,他们开启了一段甜甜的师生恋关系。
  • 今天被套路了吗

    今天被套路了吗

    唐湘是全球首富的孩子,幸福美满,又是人们常言道的别人家的孩子,但是她有个一言难尽的缺陷——天生面瘫导致她在现实生活中极难交到朋友,但为了让父母放心,强迫自己交了一大堆豪门的“狐朋狗友”,但唐湘却有个不为人知的秘密——她可以自由书城,在书城她就可以彻底放飞自己一次有人友人相托,让她踏上了史上最长的路——某人的套路“湘湘快过来,外面冷”某人站在台阶上,解开自己一半狐裘对唐湘道。唐湘看看裹成球的自己,面瘫脸,道:“不冷”某人满脸黑线,暗暗咬牙,想着要把给唐湘穿的这么厚的混蛋揍一顿,浑然忘了几分钟前还想再给唐湘裹一件衣服的自己……回到现世后,他们才知道,原来一切都是命中注定。(外表高贵冷艳内心欢脱逗比女主VS外表温柔和熙内心残忍闷骚男主)
  • 所有的星星都知道

    所有的星星都知道

    所有的星星都知道,宋白喜欢林易,从青涩懵懂到成熟懂事,从天黑到天明,从欢笑到啜泣。
  • 穿书后我才是女主原型

    穿书后我才是女主原型

    【穿书1V1,双洁,甜宠】作为21世纪接受着高等教育的夏安笙,她!穿越了!不仅如此,她还发现,她居然穿进了好闺蜜为了她的人生大事,以她为原型写的纯情恋爱小说《ren笙第一次》当中!成功单身到法定结婚年龄的夏安笙脸上笑嘻嘻:是学历不够香吗???是手机不好玩吗???为什么还有经历一次魔鬼高中!!!慕笙:当然是为了和我早一把恋!(佛系有原则的小仙女×温柔淡漠十项全能学霸)又名:闺蜜为我送男友/笙笙不离
  • 穿成恶魔大佬的魔女妻

    穿成恶魔大佬的魔女妻

    她,几十万年前的铁血将军,也是任何女子都梦寐想成为的皇后。却在一夕之间被剥兵权,灭全族,废功法,高高在上的皇后,瞬间变成人人都能踩上一脚的废后。一念成佛,一念成魔。一场暗杀,却被她表演成了最盛大的烟火秀。众人讨伐,她从后城墙嫣然一笑,跃身而下,冰封数十万年后,变成婴儿活在在了拥有现代文明的都市社会中。她重新拥有了一个家······事不关己,高高挂起成为了她的隐藏座右铭,个屁,实力根本不允许。只是谁能告诉她,为什么如今活在她周围的一个个的都是麻瓜!阴差阳错,她救下了一名男子,嗯,长的俊俏,身材也好,若她当时不死想要成为女皇,一定把他纳进后宫做皇后。"女人,有没有人告诉过你哦,玩火会自焚!"她则将一团火拿在手心,向他展示,玩火,只要玩的好,不会自焚。
  • 阿部多特的故事书

    阿部多特的故事书

    穿越,悬疑,爱情,科幻,恐怖,本故事存属虚构,阿部多特让她自己穿越到未来的故事……