设计模式-模板设计模式(行为)

设计模式-模板设计模式(行为)
模板设计模式:如人到餐厅吃饭分为步骤①:点餐,步骤②:吃饭,步骤③:买单,其中一三步骤大多是相同的,步骤二每个人吃什么东西是不同的。于是就把三步封装一个抽象类,有个所有步骤的行为方法,每个人到餐厅吃饭就继承这个类,实现自己的方法。
 
public abstract class Eat{

    public void doEat(){
        order();
        eating();
        pay();
    }

    public void order(){
        //todo 具体实现点餐代码
        System.out.println("具体实现点餐代码");
    }

    /**抽象吃饭*/
    public abstract void eating();

    public void pay(){
        //todo 具体实现买单代码
        System.out.println("具体实现买单代码");
        if(discount()){
            //todo 实现打折代码( 通过钩子方法来确定某步骤是否执行打折)
            System.out.println("今天有打折哦");
        }
    }

    public boolean discount(){
        //默认没有打折,子类可以覆盖这个钩子方法,从而实现买单是否打折
        return false;
    }
}


public class MyEat extends Eat {
    @Override
    public void eating() {
        System.out.println("今天吃鸡肉,味道不错。。。");
    }

//    @Override
//    public boolean discount() {
//        return true;
//    }
}


public class test2 {
    public static void main(String[] args) {
        MyEat eat = new MyEat();
        eat.doEat();
    }
}

具体实现点餐代码
今天吃鸡肉,味道不错。。。
具体实现买单代码


如果把MyEat的钩子方法实现覆盖

具体实现点餐代码
今天吃鸡肉,味道不错。。。
具体实现买单代码
今天有打折哦

 

转载于:https://www.cnblogs.com/nedhome/p/9622654.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值