「补课」进行时:设计模式(3)——和做菜一样简单的模版方法模式极客挖掘机

现在,我们要做一个番茄炒蛋,就下面这货:

这件事情我用程序实现下,先抽象一个做菜的模型:

publicabstractclassAbstractCook{/***做菜第一步就是先洗菜*/publicabstractvoidxicai();/***菜洗完了以后要切菜*/publicabstractvoidqiecai();/***然后就是起锅烧油,写到这的时候满脑子德子的声音*/publicabstractvoidqiguoshaoyou();/***菜烧好以后需要装盘就能上桌了*/publicabstractvoidzhuangpan();/***开始做菜*/publicabstractvoidcook();}然后开始番茄炒蛋:

publicclassTomatoEggsextendsAbstractCook{@Overridepublicvoidxicai(){System.out.println("番茄炒蛋先洗菜");}@Overridepublicvoidqiecai(){System.out.println("番茄炒蛋再切菜");}@Overridepublicvoidqiguoshaoyou(){System.out.println("现在开始起锅烧油做番茄炒蛋");}@Overridepublicvoidzhuangpan(){System.out.println("番茄炒蛋烧好以后装盘");}@Overridepublicvoidcook(){this.xicai();this.qiecai();this.qiguoshaoyou();this.zhuangpan();}}做完了番茄炒蛋,感觉有点不够吃,再来一个宫保鸡丁:

程序写到这里,好像有哪里不对,两个实现类的cook()方法都是完全相同的,那这个cook()方法的实现应该出现在抽象类,不应该在实现类上,抽象是所有子类的共性封装。

代码修改一下,把刚才做菜的那个抽象模型修改一下:

publicabstractclassAbstractCook{/***做菜第一步就是先洗菜*/publicabstractvoidxicai();/***菜洗完了以后要切菜*/publicabstractvoidqiecai();/***然后就是起锅烧油,写到这的时候满脑子德子的声音*/publicabstractvoidqiguoshaoyou();/***菜烧好以后需要装盘就能上桌了*/publicabstractvoidzhuangpan();/***开始做菜,在抽象类里直接定义执行过程*/publicvoidcook(){this.xicai();this.qiecai();this.qiguoshaoyou();this.zhuangpan();}}输出结果:

番茄炒蛋先洗菜番茄炒蛋再切菜现在开始起锅烧油做番茄炒蛋番茄炒蛋烧好以后装盘好了,这就是模版方法模式,是不是感觉很简单,经常会见到或者经常会用到。对的,没毛病,你经常在使用,但你不知道这是模板方法模式,

模板方法模式(TemplateMethodPattern):

Definetheskeletonofanalgorithminanoperation,deferringsomestepstosubclasses.TemplateMethodletssubclassesredefinecertainstepsofanalgorithmwithoutchangingthealgorithm'sstructure.(定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。)

在这张类图里面,AbstractClass叫做抽象模板,它的方法分为两类:

为了防止恶意的操作,一般模板方法都加上final关键字,不允许被覆写。

下面是模版方法模式的通用代码:

抽象模板类:

publicabstractclassAbstractClass{//基本方法protectedabstractvoiddoSomething();//基本方法protectedabstractvoiddoAnything();//模板方法publicfinalvoidtemplateMethod(){this.doSomething();this.doAnything();}}具体模板类:

publicclassConcreteClass1extendsAbstractClass{@OverrideprotectedvoiddoSomething(){//逻辑处理}@OverrideprotectedvoiddoAnything(){//逻辑处理}}publicclassConcreteClass2extendsAbstractClass{@OverrideprotectedvoiddoSomething(){//逻辑处理}@OverrideprotectedvoiddoAnything(){//逻辑处理}}

THE END
1.做饭菜谱大全做饭菜谱食谱大全做饭网为您提供做饭菜谱大全.其中包括八大菜系菜谱大全、家常菜食谱大全、北方面食做饭大全、年夜饭做菜大全等.找菜谱、食谱、做菜方法等做饭大全就上做饭网.【做饭网您的家庭厨师】https://www.zuofan.cn/
2.家常菜做法大全有图家常菜菜谱大全做法好吃的家常菜胡萝卜 0做过 孙小手同学 八道素菜的炒法 1做过 雕窝采芹人 家常快手宫保鸡丁,小朋友也能吃的微辣版,小白也能复刻95%形似,90%味道! 主料:、鸡胸肉、胡萝卜、黄瓜、炸花生、碗汁:生抽、白糖、米醋、蚝油、淀粉、清水、腌肉:花雕酒、白胡椒粉、淀粉、盐、油、其它:油、郫县豆瓣酱、葱花、蒜末 https://www.xiachufang.com/category/40076/
3.家常菜做法图解家常菜做法大全有图简单家常菜做法步骤大全菜谱大全 菜谱分类 千道家常菜 最新菜谱 热菜菜谱 凉菜菜谱 汤羹菜谱 主食做法 小吃大全 泡酱腌菜 年夜饭 红烧肉 鱼香肉丝 可乐鸡翅 糖醋排骨 红烧茄子 红烧排骨 宫保鸡丁 水煮肉片 回锅肉 佛跳墙 水煮鱼 寿司 美食厨房 家常菜做法图解 凉菜素菜 鱼类海鲜 汤羹菜谱 风味小吃 禽蛋专题 面食专题 主食专题 粥品专https://www.meishichina.com/Eat/Special/TuJie/
4.做菜网做菜大全食谱大全及做法炒菜做菜网 - 中国最优质的美食,食谱,菜谱网。做你最喜爱的美食网,菜谱网。提供最人性化的菜谱大全,食谱家常菜,家常菜谱大全的美食网,让人们在宣泄的都市中体验在家常做菜,享受美食的乐趣.找家常菜谱,上美食杰菜谱美食网http://zuocai.ancw.cn/
5.做家常菜的app哪个好?家常菜谱大全app家常菜做法大全app做家常菜的app推荐本专题专为想要做菜的用户打造的做菜软件,主要教大家一些家常菜的一些做法,丰富的菜谱用户可以在线的查看选择你感兴趣的菜开始学,有视频,有图文让用户可以更好的准备食材,一键收藏转发都可以让你更好的记录学习,不同的分类列表让用户更好的选择了解不同的菜系,方便的快捷搜索让你做减肥餐,月子餐,http://www.downcc.com/k/jiachangcaiapp/
6.煮菜的做法大全家常煮什么菜好吃又简单一天3餐加宵夜全了→煮是一种常见的烹饪手法,将处理好的食物及其他原料一起放在足量的汤汁或清水中,先用大火烧开,再用中火或小火慢慢煮熟的一种烹饪方法。另外还有油水煮和白煮这两种方法,油水煮就是一种热菜煮法,白煮是一种冷菜技法。所制食品口味清鲜、美味,是一种健康的饮食方式。煮菜https://m.maigoo.com/best/21104.html
7.酷食谱酷食谱(kushipu.com)是分享家常菜谱做法大全及图片的美食网站.提供家常菜做法大全图解,简单食谱家常菜做法步骤大全详细步骤及图片做法,让您轻松学做美味佳肴,享受美食的乐趣.找家常菜谱,上酷食谱美食网.http://m.kushipu.com/
8.蒸菜的菜谱做法大全蒸菜怎么做营养好吃蒸菜在烹饪中,既能制作主食,也能制作小吃和糕点。在菜品烹调中,既可用于半成品加工的前期热处理,也可用于成品烹调,使之成熟或软熟入味。蒸菜不仅做法简单,很大程度上节省了我们做菜的时间。很能体现中国人的智慧。 医院教授的观点:蒸食物请一定要是先开着盖子把水烧开,再放入要蒸的食物,盖上盖子!难怪有癌症的https://m.xiangha.com/caipu/caidan/676/
9.美食家必备教你做菜烹饪技巧与菜谱大全常见烹饪方法有哪些? 不同的料理需要不同的处理方法,这包括炒、煮、炸、蒸等多种手法。在“教你做菜”这一旅程上,你将深入了解每一种方法,并学会根据自己所准备食品特性进行适当调整,以达到最佳效果。 简单快捷的小吃制作 生活节奏加快了,但我们仍然希望能够享受到美味佳肴。在这个忙碌而又充满活力的时代,“教你https://www.ev5oxj46wh.cn/yin-shi-wen-hua/757730.html
10.蛤蜊肉干的做法大全有哪些?权威文章经过上述方法处理的蛤蜊干就可以用来做菜啦,吃法很多,做汤、炒菜或凉拌等均可。做汤的时候加些蛤蜊干能提升鲜味,比如蛤蜊干番茄豆腐汤等,煮面条的时候也可以扔进一把蛤蜊干,还可以剁碎后剪成鸡蛋饼,或做成包子、饺子和馄饨的馅料,蒸成鸡蛋羹也非常好吃。 https://www.cndzys.com/yinshi/changshi/1562954.html
11.精选菜谱大全美食主题站文章,推介各地美食攻略,分享健康饮食小常识和美食烹饪技巧,记录美食达人做菜的的经验和心情,让美食吃的健康,吃的明白。https://www.vcfqmjz.com/
12.家常菜做法大全APP下载2024最新版家常菜做法大全下载安装《家常菜做法大全》是一本非常实用的厨房指南,为烹饪爱好者提供了丰富多样的家常菜制作方法。无论你是刚入门的新手厨师,还是有一定烹饪经验的老手,本书都能给你带来全新的灵感和挑战。 本书包含了各种各样的家常菜做法,从简单易学的辣子鸡丁、红烧肉到口味独特的酸辣土豆丝、麻婆豆腐,再到精致美味的水煮鱼、宫保虾https://www.wandoujia.com/bangdan/580811/
13.精选菜谱大全家常食谱百科推介各地美食攻略,分享健康饮食小常识和美食烹饪技巧,记录美食达人做菜的的经验和心情,让美食吃的健康,吃的明白。https://www.jeucwxn.com/