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

模板方法模式 – 做面条

制作面条抽象类

public abstract class BoiledNoodles {

    public final void cook() {
        showName();
        // 1. 煮开水
        this.boiledWater();
        // 2. 下面条
        this.putNoodles();
        // 3. 加鸡蛋
        if (needEggs()) {
            this.putEggs();
        }
        // 4. 放调料
        this.putSeasoning();
        // 5. 开吃
        this.eat();
    }

    protected abstract void showName();

    protected final void boiledWater() {
        System.out.println("煮开水...");
    }

    final void putNoodles() {
        System.out.println("下面条...");
    }

    final void putEggs() {
        System.out.println("加鸡蛋...");
    }

    protected boolean needEggs() {
        return false;
    }

    protected abstract void putSeasoning();

    private void eat() {
        System.out.println("吃面..");
    }

}

面条1 – 油泼面

public class OilSplashingNoodles extends BoiledNoodles {
    @Override
    protected void showName() {
        System.out.println("油泼面:");
    }

    @Override
    protected void putSeasoning() {
        System.out.println("干辣子、葱花、香菜...");
        System.out.println("泼热油...");
    }
}

面条2 – 兰州拉面

public class LanZhouPullNoodles extends BoiledNoodles {
    @Override
    protected void showName() {
        System.out.println("兰州拉面:");
    }

    @Override
    protected void putSeasoning() {
        System.out.println("葱花、香菜、辣椒油");
    }

    @Override
    protected boolean needEggs() {
        return true;
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        BoiledNoodles noodles = new OilSplashingNoodles();
        noodles.cook();
        System.out.println("------------ 分割线 ------------");
        noodles = new LanZhouPullNoodles();
        noodles.cook();
    }
}

** 运行结果 **

油泼面:
煮开水...
下面条...
干辣子、葱花、香菜...
泼热油...
吃面..
------------ 分割线 ------------
兰州拉面:
煮开水...
下面条...
加鸡蛋...
葱花、香菜、辣椒油
吃面..
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值