范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

一文看懂模板模式

  模板方法模式
  行为模型的一种
  定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模式模型
  其实可以理解为一个继承模型,父类一般为抽象类,提供几个固定的模板方法。子类继承父类,子类覆写父类未实现的方法.
  在调用的时候直接使用父类的类型来直接调用方法.
  这里有两个角色:
  抽象模板(Abstract Template)角色 : 定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。 定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体方法。
  具体模板(Concrete Template)角色 实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。 每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。
  来的图了,直接找网上的截图了.
  模板方法中的方法可以分为两大类: 模板方法 和 基本方法 。
  模板方法
  一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。
  一个抽象类可以有任意多个模板方法,而不限于一个。每一个模板方法都可以调用任意多个具体方法。
  基本方法
  基本方法又可以分为三种:抽象方法(Abstract Method)、具体方法(Concrete Method)和钩子方法(Hook Method)。
  ●  抽象方法:一个抽象方法由抽象类声明,由具体子类实现。在Java语言里抽象方法以abstract关键字表示。
  ●  具体方法:一个具体方法由抽象类声明并实现,而子类并不实现或置换。
  ●  钩子方法:一个钩子方法由抽象类声明并实现,而子类会加以扩展。通常抽象类给出的实现是一个空实现,作为方法的默认实现。钩子方法的名字建议使用do开始
  在上面的例子中,AbstractTemplate是一个抽象类,它带有三个方法。其中abstractMethod()是一个抽象方法,它由抽象类声明为抽象方法,并由子类实现;hookMethod()是一个钩子方法,它由抽象类声明并提供默认实现,并且由子类置换掉。concreteMethod()是一个具体方法,它由抽象类声明并实现。 实例
  比如说我们列一天的日常计划:
  1、早上起床 跑步 吃早饭
  2、中午 吃午饭 -午休
  3、晚上 吃晚饭 - 加班 - 健身 - 睡觉
  假设我们很自律那么每天都是按照这个计划框架来。一般都是早上才看吃什么,到中午了在看吃什么,到了晚上才知道吃什么。
  因此具体的对应 吃早饭、吃午饭、吃晚饭(吃货附体)这几件事具体一点的细节我们是无法确定的。
  安静!!!
  抽象模板: public abstract class AbstractDailyPlan {      // 早上起床  跑步 吃早饭     void morningPlan(){         System.out.println("------ 起床了 ------");         // 跑步         run();         // 吃早饭         doBreakfast();     }      // 跑步     void run(){         System.out.println("早期的虫儿被鸟吃");     }      void doBreakfast(){         throw new ExceptionInInitializerError("早上吃啥??");     }      void noondayPlan(){         System.out.println("------ 午休了 ------");         // 吃午饭 -         doLunch();         // 午休         sleepMid();     }      abstract void doLunch();      void sleepMid(){         System.out.println("~~huhu~~wujiao~~");     }      // 晚上 吃晚饭 - 加班 - 健身 - 睡觉     void nightPlan(){         System.out.println("------ 下班了 ------");         doDinner();         workExtra();         doexercise();         sleep();     }      void doDinner(){         System.out.println("减肥,不吃了");     }      void workExtra(){         System.out.println("默认不加班");     }      abstract void doexercise();      void sleep(){         System.out.println("~洗澡澡~脱光光~睡觉觉~");     } }
  具体模板 public class DailyPlanMonday extends AbstractDailyPlan{      @Override     void doLunch() {         System.out.println("吃盒饭吧");     }      @Override     void doexercise() {         System.out.println("今天练习深蹲");     }      @Override     void doBreakfast() {         System.out.println("~~豆浆~~烧饼~~");     } }
  测试类: public class Test {     public static void main(String[] args) {         AbstractDailyPlan  dailyPlan = new DailyPlanMonday();         // 早上的计划         dailyPlan.morningPlan();         // 中午的计划         dailyPlan.noondayPlan();         // 晚上的计划         dailyPlan.nightPlan();     } }
  输出结果: ------ 起床了 ------ 早期的虫儿被鸟吃
  ~~豆浆~~烧饼~~
  ------ 午休了 ------
  吃盒饭吧
  ~~huhu~~wujiao~~
  ------ 下班了 ------
  减肥,不吃了
  默认不加班
  今天练习深蹲
  ~洗澡澡~脱光光~睡觉觉~
  思考下我们例子中的方法哪些属于钩子方法,具体都是如何做的。
  封面图,侵权删。看图点赞、关注的都能中五百万

关于我知道驾驶的一切2开始为什么要学这么多抽象理论Withouttheoryyoucanalsodrivewellbutyoucantbeexcellent如果你在开始驾驶之前就已经清楚了关于驾驶的理论,并iQOO8你失望还是期待今看完了发布会,我感觉一般般,预热的屏幕,120w快充,等,我其实感觉没什么过于惊喜。废话不多说,我速战速决说完。iqoo88prog全系120w充电,屏幕2k和优酷合作,(疑问的黑鲨4SPRO这个月的13号下午发布了黑鲨4s,说实话我都不知道,怎么说呢,对于小米的游戏手机一直都不感冒,像这种发布会都要自己搜索一会,很少又人推荐给我看首先给大家看一下最关心的价格,这次和如现在时代的手机全是好用的手机吗?先按照程序推荐一下再说选择1000元以下红米note92000元以下真我gt大师版闪速版,不推荐k40游戏版和k40是因为6128不适应这个大内存时代3000元以下iqooneo5魅族18x将要发布?据说魅族18X将采用骁龙870处理器,120Hz直屏,中置打孔4200mAh电池支持30W有线充电64MPOV64B主摄12MP超广角500长焦屏幕指纹立体双扬X轴马达。16x可以魅蓝回归,魅族取消三零系统我今天看见一则重爆消息,魅族取消三零系统,因为生活,而魅蓝也将回归。这也许就是魅族现在想活下去的最好证明。魅族18系统还是三零(其实我感觉三零不是特别重要)自己都可以关闭,用广告生我们一直念念不忘的,是那个相信自己能成为侠的自己吧。和武侠相关的几个闪回1。借书还书,整套整套那种应该是小学,一次次的父亲陪着我去堂姐夫家还书,还的是整套整套的武侠小说(天龙八部,神雕侠侣)。堂姐夫家有个很大很大的书柜,里面都是成套魅族18x魅族18s发布,这次定价合适吗今天魅族发布了老两款机型,白色面板回归。魅族18x系列和魅族18s系列。这次全系都是骁龙芯片,定价大家感觉是贵了还是便宜了。大部分网友都是18买早了,不过这次魅族18s定价整体和魅魅蓝发布,第一款新品今天魅蓝打头阵的是这款耳机魅蓝Blue内置12mm超大动圈,30dB主动降噪,双mic通话降噪,支持Flyme妙连,静享音乐30h超长续航,还带无线充电。售价只有199。这个价格,iPhone13搭载120赫兹自适应香不香苹果新品发布会,一般情况我都不怎么看,因为大部分就是电池变小,价格变贵,摄像头和芯片升级。今年,iPhone13破天荒的加量不加价,13mini摄像与12pro无异,续航也增加了,关于我知道驾驶的一切1看书能学会开车吗?看书能学会开车吗?不看书,你肯定也能把车开上路。但是你想在开得好一点的话,就可能不太行了。即使通过一些专门的训练,可以把你的技能提升到适用某些特殊使用场景的。比如国宾车的司机,军队
小米双接口U盘新品开启众测活动读取速度达150MBs今天,小米社区众测板块开启了小米双接口U盘的0元众测活动,招募用户参与报名体验。根据介绍,这款U盘将采用全金属外壳,包含一个USBTypeC接口和一个TypeA接口,采用USB3。地平线徐健中国已经成为全球顶级汽车智能芯片的角斗场新京报贝壳财经讯(记者宋美璐陈维城)1月20日,由新京报贝壳财经北京经济技术开发区联合主办,中国国际贸易促进委员会汽车行业分会北京市高级别自动驾驶示范区工作办公室联合支持的智驾碳新亿航智能(EH。US)获得日本50架EH216预售订单智通财经APP获悉,1月20日,亿航智能(EH。US)宣布,日本领先的空中交通数字平台公司AirX株式会社订购了50架EH216系列自动驾驶飞行器。这是亿航智能迄今在日本获得的最大媲美iPhone?红米K50首发安卓最强X轴振动马达近日,瑞声科技RichTap发布了业界首个超宽频X轴线性马达CyberEngine。该马达拥有超宽频超强振感超省电超安静超舒适的特点。具体数据方面,它的有效频宽50Hz500Hz,iPhone13在中国市场连续六周位居销量榜首在9月15日推出9月24日正式上市的iPhone13系列的推动下,苹果智能手机在去年四季度的出货量超过三星,重回全球第一。Counterpoint称新的iPhone13引领了这场成摩根大通高gas费将令以太坊网络失去市场份额银行业巨头摩根大通在最新报告中表示,以太坊的高昂gas费和网络拥塞给智能合约平台带来了巨大风险。摩根大通表示,这可能是以太坊估值的问题。它特别补充说,以太坊可能会失去其NFT市场份红米K50宇宙将全球首发CyberEngine超宽频马达瑞声科技今日发布了超宽频X轴线性马达CyberEngine,其具备超宽频超强振感超省电超安静超舒适的特点。红米Redmi手机官方现宣布,RedmiK50宇宙将全球首发CyberEn小米竖向折叠屏手机已进入测试阶段,有望今年上市在功能机时代,在手机形态方面可谓百花齐放。直板翻盖侧滑等等,形状更是五花八门。然而,在追求全面屏的今天,手机外观同质化越来越严重。厂商们基本只能在背部设计上追求差异化。随着屏幕等技750亿美元巨额押注,微软想成为游戏界奈飞?将动视暴雪收入囊中,微软意在大举进军云游戏。微软表示,在原本计划中,收购动视暴雪的计划金额为750亿美元,调整动视的净现金后,交易价值为687亿美元。这是微软有史以来最大的一笔投资英伟达GT1010入门级显卡现身平台2GB显存去年1月,网络上流传着英伟达正在发布一款新的入门级显卡的消息,名为GT1010,不过该显卡到现在都没有官宣。曝光数据称,GT1010是基于Pascal架构的显卡,拥有与GT1030与中国电池企业较量?韩国LG新能源公司将创纪录IPO英国金融时报网站近日报道称,全球第2大电动汽车电池制造商韩国LG新能源公司准备通过首次公开募股(IPO)筹集110亿美元,与中国对手竞争市场主导地位。其上市规模将在韩国创下纪录。报