博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java设计模式(七) 模板模式-使用钩子
阅读量:7119 次
发布时间:2019-06-28

本文共 1921 字,大约阅读时间需要 6 分钟。

1,模板类

package com.pattern.template;public abstract class CaffeineBeverageWithHook {		void prepareRecipe(){		boilWater();		brew();		pourInCup();		if(customerWantsCondiments()){			addCondiments();		}	}	abstract void brew();		abstract void addCondiments();		void boilWater(){		System.out.println("Boiling water");	}		void pourInCup(){		System.out.println("Pouring into cup");	}		boolean customerWantsCondiments(){		return true;	}}

2,模板的子类实现类

package com.pattern.template;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class CoffeeWithHook extends CaffeineBeverageWithHook{	/** 	 * @see com.pattern.template.CaffeineBeverageWithHook#brew()	 */	@Override	void brew() {		System.out.println("Dripping Coffee through filter");	}	/** 	 * @see com.pattern.template.CaffeineBeverageWithHook#addCondiments()	 */	@Override	void addCondiments() {		System.out.println("Adding Sugar and Milk");	}		public boolean customerWantsCondiments(){		String answer = getUserInput();				if(answer.toLowerCase().startsWith("y")){			return true;		} else{			return false;		}	}		private String getUserInput(){		String answer = null;		System.out.println("Would you like milk and sugar with your coffee (y/n)?");				BufferedReader in = new BufferedReader(new InputStreamReader(System.in));				try {			answer = in.readLine();		} catch (IOException e) {			System.out.println("IO Exception!");		}				if(answer == null){			return "no";		}		return answer;	}}

3,测试类

package com.pattern.template;public class BeverageTestDrive {		public static void main(String[] args) {		CoffeeWithHook coffeeHook = new CoffeeWithHook();		System.out.println("\nMaking tea...");		coffeeHook.prepareRecipe();	}}

4,输出结果:

Making tea...

Boiling water
Dripping Coffee through filter
Pouring into cup
Would you like milk and sugar with your coffee (y/n)?
y
Adding Sugar and Milk

转载于:https://www.cnblogs.com/mengjianzhou/p/5986814.html

你可能感兴趣的文章
助力春运 重庆机场今晨新增一架飞机入列
查看>>
刘海I关于iPhone X 的适配
查看>>
对比了上百个python程序员的开发习惯,这10个方法最节省时间!
查看>>
斐讯音响突然走红,原来它的秘密是这个!
查看>>
维密天使糖糖传授自拍秘籍,最满意自拍来自OPPO R11s
查看>>
重磅!谷歌Fuchsia操作系统将支持运行Linux应用程序
查看>>
险些被吓到!白宇代言新品万元荣耀8X售价原因揭秘
查看>>
冲动是魔鬼!国庆换机如何不花冤枉钱?
查看>>
杭州街头惊现“梦想改造家”,ATM取款区变废为宝
查看>>
百度Apollo发布智能驾驶商业化解决方案
查看>>
2018年预测:GPU数据库或是未来的数据库统治者!
查看>>
「每天一道面试题」谈String和StringBuffer、StringBuilder区别
查看>>
统计局:去年12月天然气、电力生产增长较快
查看>>
房租抵扣个税不用再填房东信息 房东这下放心了吗?
查看>>
大湾区足球联赛港澳赛区上演进球大战
查看>>
又一巨头布局区块链,360区块猫上线,你不想拥有一只零代猫吗
查看>>
[译] Scala 类型的类型(一)
查看>>
Swift iOS : 代码分析DrawController
查看>>
Architecture(5)电商APP组件化探索
查看>>
Web全屏模式轻松掌握[局部元素全屏展示]
查看>>