重学Java设计模式:实战命令模式「模拟高档餐厅八大菜系,小二点单厨师烹饪场景」小傅哥

命令模式在我们通常的互联网开发中相对来说用的比较少,但这样的模式在我们的日常中却经常使用到,那就是Ctrl+C、Ctrl+V。当然如果你开发过一些桌面应用,也会感受到这样设计模式的应用场景。从这样的模式感受上,可以想到这是把逻辑实现与操作请求进行分离,降低耦合方便扩展。

命令模式是行为模式中的一种,以数据驱动的方式将命令对象,可以使用构造函数的方式传递给调用者。调用者再提供相应的实现为命令执行提供操作方法。可能会感觉这部分有一些饶,可以通过对代码的实现进行理解,在通过实操来熟练。

在这个设计模式的实现过程中有如下几个比较重要的点;

在这个案例中我们模拟在餐厅中点餐交给厨师烹饪的场景

命令场景的核心的逻辑是调用方与不需要去关心具体的逻辑实现,在这个场景中也就是点餐人员只需要把需要点的各种菜系交个小二就可以,小二再把各项菜品交给各个厨师进行烹饪。也就是点餐人员不需要跟各个厨师交流,只需要在统一的环境里下达命令就可以。

在这个场景中可以看到有不同的菜品;山东(鲁菜)、四川(川菜)、江苏(苏菜)、广东(粤菜)、福建(闽菜)、浙江(浙菜)、湖南(湘菜),每种菜品都会有不同的厨师进行烹饪。而客户并不会去关心具体是谁烹饪,厨师也不会去关心谁点的餐。客户只关心早点上菜,厨师只关心还有多少个菜要做。而这中间的衔接的过程,由小二完成。

那么在这样的一个模拟场景下,可以先思考哪部分是命令模式的拆解,哪部分是命令的调用者以及命令的实现逻辑。

不考虑设计模式的情况下,在做这样一个点单系统,有一个类就够了

像是这样一个复杂的场景,如果不知道设计模式直接开发,也是可以达到目的的。但对于后续的各项的菜品扩展、厨师实现以及如何调用上会变得非常耦合难以扩展。

itstack-demo-design-14-01└──src└──main└──java└──org.itstack.demo.design└──XiaoEr.java2.代码实现publicclassXiaoEr{privateLoggerlogger=LoggerFactory.getLogger(XiaoEr.class);privateMapcuisineMap=newConcurrentHashMap();publicvoidorder(intcuisine){//广东(粤菜)if(1==cuisine){cuisineMap.put(1,"广东厨师,烹饪鲁菜,宫廷最大菜系,以孔府风味为龙头");}//江苏(苏菜)if(2==cuisine){cuisineMap.put(2,"江苏厨师,烹饪苏菜,宫廷第二大菜系,古今国宴上最受人欢迎的菜系。");}//山东(鲁菜)if(3==cuisine){cuisineMap.put(3,"山东厨师,烹饪鲁菜,宫廷最大菜系,以孔府风味为龙头.");}//四川(川菜)if(4==cuisine){cuisineMap.put(4,"四川厨师,烹饪川菜,中国最有特色的菜系,也是民间最大菜系。");}}publicvoidplaceOrder(){logger.info("菜单:{}",JSON.toJSONString(cuisineMap));}}六、命令模式重构代码接下来使用命令模式来进行代码优化,也算是一次很小的重构。

命令模式可以将上述的模式拆解三层大块,命令、命令实现者、命令的调用者,当有新的菜品或者厨师扩充时候就可以在指定的类结构下进行实现添加即可,外部的调用也会非常的容易扩展。

itstack-demo-design-14-02└──src├──main│└──java│└──org.itstack.demo.design│├──cook││ ├──impl││ │├──GuangDongCook.java││ │├──JiangSuCook.java││ │├──ShanDongCook.java││ │└──SiChuanCook.java││ └──ICook.java│├──cuisine││ ├──impl││ │├──GuangDoneCuisine.java││ │├──JiangSuCuisine.java││ │├──ShanDongCuisine.java││ │└──SiChuanCuisine.java││ └──ICuisine.java│└──XiaoEr.java└──test└──java└──org.itstack.demo.test└──ApiTest.java命令模式模型结构

publicclassGuangDoneCuisineimplementsICuisine{privateICookcook;publicGuangDoneCuisine(ICookcook){this.cook=cook;}publicvoidcook(){cook.doCooking();}}江苏(苏菜)

publicclassJiangSuCuisineimplementsICuisine{privateICookcook;publicJiangSuCuisine(ICookcook){this.cook=cook;}publicvoidcook(){cook.doCooking();}}山东(鲁菜)

publicclassShanDongCuisineimplementsICuisine{privateICookcook;publicShanDongCuisine(ICookcook){this.cook=cook;}publicvoidcook(){cook.doCooking();}}四川(川菜)

publicclassSiChuanCuisineimplementsICuisine{privateICookcook;publicSiChuanCuisine(ICookcook){this.cook=cook;}publicvoidcook(){cook.doCooking();}}2.3抽象实现者定义(厨师接口)publicinterfaceICook{voiddoCooking();}2.4实现者具体实现(四类厨师)粤菜,厨师

publicclassGuangDongCookimplementsICook{privateLoggerlogger=LoggerFactory.getLogger(ICook.class);publicvoiddoCooking(){logger.info("广东厨师,烹饪鲁菜,宫廷最大菜系,以孔府风味为龙头");}}苏菜,厨师

publicclassJiangSuCookimplementsICook{privateLoggerlogger=LoggerFactory.getLogger(ICook.class);publicvoiddoCooking(){logger.info("江苏厨师,烹饪苏菜,宫廷第二大菜系,古今国宴上最受人欢迎的菜系。");}}鲁菜,厨师

publicclassShanDongCookimplementsICook{privateLoggerlogger=LoggerFactory.getLogger(ICook.class);publicvoiddoCooking(){logger.info("山东厨师,烹饪鲁菜,宫廷最大菜系,以孔府风味为龙头");}}

THE END
1.跨越五星级与街头小摊:一场穿越味蕾的餐厅物语在这篇文章中,我们将带您领略一场跨越五星级与街头小摊的餐厅冒险,我们将从多个角度对不同类型的餐厅进行分析,带您走进餐厅的世界,探索其中的美食奥秘。 二、五星级餐厅的奢华之旅 1、奢华氛围:五星级餐厅通常提供优雅、宁静的用餐环境,注重细节和服务质量。 http://www.lvshixiong.com/post/18659.html
2.餐厅开业计划书9.确定组织结构、人员定编、运作模式。 10确定餐厅经营的主菜系。 11.编印岗位职务说明书、工作流程、工作标准、管理制度、运转表格等。 12.落实员工招聘事宜。 十四.开业前第12天至第10天 1.按照餐厅的设计要求,确定餐厅各区域的布置标准。 2.制定部门的物品库存等一系列的标准和制度。 https://www.99xueshu.com/w/filear1wzv8w.html
3.酒店业的现状分析行政总厨一职与餐饮部经理平级,行政总厨是饭店后厨的管理者,对饭店的菜系、口味、成本负责。客房部主管酒店客房、布草房及洗涤相关设备。销售部负责公关企划、与OTA线上线下渠道的对接、与企业大客户的往来拜访。因饭店规模较小,财务部除了负责财务相关工作,还兼管采购及经营成本控制工作。酒店工程部负责锅炉房的管理https://www.360wenmi.com/f/filexsmc49n7.html
4.长三角酒店经典案例启示右为上海锦江饭店驻店经理祝捷 上海国际饭店。该酒店共有客房261间(套),是一家历史文化型老酒店。酒店在不断创新经营管理模式的同时,注重文化的挖掘和与产品的融合,使文化的附加值进一步提升。特色经营成为酒店的利器,一款蝴蝶酥,年创收五千万元。与此同时,酒店尝试了管理架构优化,有效控制了人力成本,大大提高了运营https://www.meadin.com/200854.html
5.美国最大餐饮GPO西斯科(Sysco)的供应链服务模式@集采网西斯科(SYSCO)模式在中国 从美国餐饮供应链行业整体客户结构看,餐饮客户占比约55%,其中全国/区域性餐饮连锁占比约30%,独立餐饮店占比25%;零售休闲作为第二大客户群体,占比约25%;教育、政府和医疗机构共占比15%。行业Top3企业在餐饮客户的占比较行业平均水平更高。2018年美国食品研究机构Technomic按未来增长和服务增值https://group-purchasing.com/article/2460
6.2024大中华区最佳香槟酒单评选大众评选通道正式开启!–槟客文化第六届大中华区最佳香槟酒单评选的专业评审环节已经圆满结束,今年除了由法国侍酒师协会香槟 – 阿登大区分会组成的专业评审团在 Caserne Chanzy 酒店进行线下评审外,为了让各位酒单撰写人对酒单的用心和从未停止提升的专业度,被更多人感知,同时也展现出中文香槟酒单的独特魅力,今年槟客文化特别新增邀请了几位华人评审,http://www.sparklingplus.com/index.php/95ab452030/
7.2021十大经典餐厅经营类游戏餐厅模拟经营类游戏有哪些这个游戏最大的优点是不用大家氪金,也不用氪肝,就能够轻松享受到经营带来的快乐,同时玩家还可以探索神秘岛礁,更换不同的装饰画风。 想玩需优先下载九游APP 9、《餐厅萌物语》 从这款游戏的名字就能够看出来,这款游戏是可爱风,里面有超多时下流行的元素,作为老板的玩家永远不用担心孤单,因为会有超可爱的助理一直https://a.9game.cn/news/5635769.html