模板模式--打工人的一天

模板模式:Template-Method

故事:

帅哥:“每天都在加班,我已经很久没有看见日落了。生活真的是太苦逼了,每天都是这样两点一线,很少有自由的时间可以支配啊。生活的作息就是被安排好的模板,没有一点意外啊。”

美女:“我上班可没你这么惨,我每天朝九晚五,自由时间还是比较充足的。”

类图:

在这里插入图片描述

代码:
/**
 * @author 康康的远方
 * @date 2021/4/5
 */
public abstract class WorkingDay {

    public final void startWorking(){
        System.out.println("早上8:30点上班");
    }

    public final void lunchTime(){
        System.out.println("午饭时间都是11:30-13:30");
    }

    public abstract void offDuty();

    public final void oneDay(){
        System.out.println("一天的工作开始了:");
        startWorking();
        lunchTime();
        offDuty();
    }
}

思考:当一套处理流程已经确定时,我们可以使用模板方法。通用公共的方法可以直接在抽象类中实现,不同的方法交给子类自己去实现。模板方法是站在父类的角度去考虑问题,处理的流程在父类中已经确定。在程序运行的时候,无论是哪个子类都可以替换父类—里氏替换原则。

/**
 * 美女的一天
 * @author 康康的远方
 * @date 2021/4/5
 */
public class BeautyWorkingDay extends WorkingDay {
    @Override
    public void offDuty() {
        System.out.println("美女每天五点下班!");
    }
}


/**
 * 帅哥苦逼的一天
 * @author 康康的远方
 * @date 2021/4/5
 */
public class HandSomeWorkingDay extends WorkingDay {
    @Override
    public void offDuty() {
        System.out.println("帅哥每天加班到晚上九点,真的好累啊!");
    }
}

/**
 * @author 康康的远方
 * @date 2021/4/5
 */
public class WorkingDayTemplate {
    public static void main(String[] args) {
        BeautyWorkingDay beauty = new BeautyWorkingDay();
        beauty.oneDay();
        System.out.println("---------------");
        HandSomeWorkingDay handSomeWorkingDay = new HandSomeWorkingDay();
        handSomeWorkingDay.oneDay();
    }
}


//执行程序结果输出...............
一天的工作开始了:
早上8:30点上班
午饭时间都是11:30-13:30
美女每天五点下班!
---------------
一天的工作开始了:
早上8:30点上班
午饭时间都是11:30-13:30
帅哥每天加班到晚上九点,真的好累啊!

思考:

从上面可以看出,父类实现的方法越多,子类越轻松;但是父类实现的越多,子类的灵活性也较低了。说到底大家都是打工人。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康康的远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值