hand first 设计模式 -模板方法模式

模板方法模式 : 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新算法.重新定义算法中的某些步骤.


咖啡因饮料超类
/**
* 咖啡因饮料超类
* @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;

}
}



勾子方法作用,如超类解耦.子类实行具体动作.超类确定是否执行.(别找我,我会找你的)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值