首页 / 更多教程 / 模板方法模式之抽象类继承
模板方法模式之抽象类继承
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了模板方法模式之抽象类继承,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2000字,纯文字阅读大概需要3分钟。
内容图文
![模板方法模式之抽象类继承](/upload/InfoBanner/zyjiaocheng/1269/12005240433a49f0875618e91869bcd4.jpg)
-
Test.java
package com.demo_type.pattern.template; public class Test { public static void main(String[] args) { System.out.println("制备咖啡..."); RefreshBeverage coffee = new Coffee(); coffee.prepareBeverageTemplate(); System.out.println("客官,咖啡好了..."); System.out.println("**************************"); System.out.println("制备茶..."); RefreshBeverage tea = new Tea(); tea.prepareBeverageTemplate(); System.out.println("客官,您要的上等好茶好了..."); } }
2. RefreshBeverage.java (提神饮料)
package com.demo_type.pattern.template; /** * @author YBnew * 抽象基类,为所有子类提供一个算法框架 * * 提神饮料 */ public abstract class RefreshBeverage { /* * 制备饮料的模板方法 * 封装所有子类共同遵循的算法框架 */ public final void prepareBeverageTemplate(){ //step1. 将水煮沸 boilWater(); //step2. 泡制饮料 brew(); //step3. 将饮料倒入杯中 pourInCup(); //setp4. 加入调味料 if(isCustomerWantsCondiments()){ addCondiments(); } } /* * 基本方法,降水煮沸,父子类行为都一样,所以设为private, */ private void boilWater() { System.out.println("将水煮沸"); } /* * 抽象的基本方法,泡制饮料 * --话说这里能将protected 变为public么?当然不要这样了,这样到处都能访问这个类和这个抽象方法了 */ protected abstract void brew(); /* * 基本方法,倒入的动作,父子类行为都一样,所以设为private, */ private void pourInCup() { // TODO Auto-generated method stub System.out.println("将水倒入杯中"); } /* * 抽象的基本方法,加入冲泡元素 */ protected abstract void addCondiments(); /* * Hook * 钩子函数,提供一个空的或默认的实现 * 具体的子类可以自行决定是否挂钩以及如何挂钩 * * 功能: 询问用户是否加调料,继承访问权限 */ protected boolean isCustomerWantsCondiments(){ return true; } }
3.Coffee.java
package com.demo_type.pattern.template; public class Coffee extends RefreshBeverage{ @Override protected void brew() { System.out.println("用沸水冲泡咖啡"); } @Override protected void addCondiments() { System.out.println("加入糖和牛奶"); } }
4.Tea.java
package com.demo_type.pattern.template; public class Tea extends RefreshBeverage{ @Override protected void brew() { System.out.println("89度泡5分钟"); } @Override protected void addCondiments() { System.out.println("加入柠檬"); } //如果不想要加柠檬 @Override protected boolean isCustomerWantsCondiments(){ return false; } }
原文:http://my.oschina.net/hyb007/blog/312217
内容总结
以上是互联网集市为您收集整理的模板方法模式之抽象类继承全部内容,希望文章能够帮你解决模板方法模式之抽象类继承所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。