浏览 1567 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-01
最后修改:2009-07-01
咖啡因饮料超类 /** * 咖啡因饮料超类 * @author panxiuyan * */ public abstract class CaffeinBeverage { /** * 制作方法 */ public void perareRecip() { boilWater(); brew(); pourInCup(); if (customerWantsCondiments()) { addCondimenes(); } } /** * 冲泡 */ public abstract void brew(); /** * 添加相关的配料 */ public abstract void addCondimenes(); /** * 把水烧开 */ public void boilWater() { System.out.println("Boiling water"); } /** * 将饭料倒入杯子 */ public void pourInCup() { System.out.println("Pouring into cup"); } /** * 是否添加相关的配料--勾子程序 * @return */ public boolean customerWantsCondiments() { return true; } } 咖啡 public class Coffee extends CaffeinBeverage { //重做父类的方法 @Override public void addCondimenes() { // TODO Auto-generated method stub } @Override public void brew() { // TODO Auto-generated method stub } } 咖啡中可以利用勾子方法.可以直接使用超类的. 茶 public class Tea extends CaffeinBeverage { @Override public void addCondimenes() { // TODO Auto-generated method stub } @Override public void brew() { // TODO Auto-generated method stub } //使用勾子方法茶不加入配料 @Override public boolean customerWantsCondiments(){ return false; } } 勾子方法作用,如超类解耦.子类实行具体动作.超类确定是否执行.(别找我,我会找你的) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |