模板模式

模板模式:封装了一个算法步骤,并允许子类为一个或多个步骤方法提供实现,模板模式可以使子类在不改变算法结构的情况下,重新定义算法中的某些步骤。
模板模式封装的是步骤,他把各种方法之间的顺序关系封装起来放在一个方法中。
策略模式侧重只是把某一种方法或者功能把他解析化,把他变成一个方法族,针对某一个方法或行为进行封装解析化的。
策略模式是通过组合的方式来做,而模板模式是通过继承的方式来做的。
两种模式结合起来用,就需要把抽象方法用一个接口来代替。

public abstract class HotDrinkTemplate {
    public final void prepareRecipe(){
        boilWater();
        brew();
        pourInCup();
        if(wantCondimentsHook()){
            addCondiments();
        }else{
            System.out.println("No Condiments");
        }
    }
    public boolean wantCondimentsHook(){
        return true;
    }
    public final void boilWater(){
        System.out.println("Boiling water");
    }
    public abstract void brew();
    public final void pourInCup(){
        System.out.println("Pouring into cup");
    }
    public abstract void addCondiments();
}
public class TeaWithHook extends HotDrinkTemplate{

    @Override
    public void brew() {
        System.out.println("Brewing tea");
    }

    @Override
    public void addCondiments() {
        System.out.println("Adding lemon");
    }
    public boolean wantCondimentsHook(){
        System.out.println("condiments,yes or no ?please input:");
        BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
        String result="";
        try{
            result=in.readLine();
        }catch(IOException e){
            e.printStackTrace();
        }
        if(result.equals("n")){
            return false;
        }
        return true;
    }
}
public class MainTest {
    public static void main(String[] args){
        //HotDrink mCoffee=new Coffee();
        TeaWithHook mTeaWithHook=new TeaWithHook();
        mTeaWithHook.prepareRecipe();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值