模版模式

1,为什么要用模版模式:
跟其他设计模式一样,存在的即合理的。
首先,模版大家都不陌生,中国古代四大发明中就包含一个印刷术,这个就是模版,不过那是活体印刷,稍微不太符合题意,所以这里做个假设。
作为应试教育的学生,我们应该很会答题,碰上选择题会怎么办呢?我们的做题步骤应该是这样:
1:自己会的题,直接写结果
2:不会的题按口诀
3:三长一短选最短
4:三短一长选最长
5:都差不多就选C
是不是这样?
这是我们的套路,也是老师的套路。我们发现所有的选择题我们都是在这么干,可以发现只有第一步不同(当然,这个例子只有两步,不是特别合理,但是比较容易理解,至少我这么想,我开心就好哈),在第一步中,如果是计算题,我们需要草纸计算,如果是课本原文,我们需要想起原文,如果是推理题,则需要慢慢推理,所以这一步,有很多中方法,但是碰到不会的题,基本上都是哈撒给,345走起,于是,我们可以将做选择题的思路转换成一个模版方法。
前面的都是铺垫,现在正菜开始:
抽象类:
抽象的类,说白了就是假的类,很虚,不能实例化,但是并不影响它有很多孩子,子承父业,也就是人们所说的望子成龙,自己当初没有好好学习,让自己的孩子按照自己的规定的流程去好好学习,不学习就打你。

public abstract class Select {
    //做题流程
    public final void doSelect(){
        //1:会做的题
        this.canDo();

        //2:不会的题
        //3:三长一短选最短
        this.selectMin();

        //4:三短一长选最长
        this.selectMax();

        //5:啥都不会就选C
        this.selectC();
    }

    //会做的题
    protected abstract void canDo();

    //不会的题
    //三长一短选最短
    protected void selectMin(){
        System.out.println("选最短");
    }

    //三短一长选最长
    protected void selectMax(){
        System.out.println("选最长");
    }

    protected void selectC(){
        System.out.println("选C");
    }
}


public class SumSelect extends Select {

    protected void canDo() {
        System.out.println("经过2张草纸的计算,终于得到答案,选A");
    }

    @Override
    protected void selectC(){
        System.out.println("结果肯定是小数,排除ABC,选D");
    }
}


public class TextSelect extends Select {
    protected void canDo() {
        System.out.println("我记住了,课本上原文答案是B");
    }
}


public class ReasoningSelect extends Select {
    protected void canDo() {
        System.out.println("经过两天两夜的推演,终于完成,选D");
    }
}

结果:

----------*****计算题*********----------------
经过2张草纸的计算,终于得到答案,选A
选最短
选最长
结果肯定是小数,排除ABC,选D
----------*****原文题*********----------------
我记住了,课本上原文答案是B
选最短
选最长
选C
----------*****推理题*********----------------
经过两天两夜的推演,终于完成,选D
选最短
选最长
选C

到这里你肯定要问了,为什么计算题的最后一步不一样,因为我们更改了啊,至于为什么,我开心啊。但是流程就这些了,流程就这几步,这是我规定好的,你可以在某一步更改你想要的结果,你说三长一短我就要蒙一个长的,那是你的自由,毕竟孩子大了,有时候也管不了了,但是老子的底线就是你只能按照我这规定的流程走,如果不,我能怎么办,就当没这个儿子呗。

抛出两个问题:
1:为什么doSelect方法需要是final的?
2:为什么修饰词要用protect?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值