Java模板方法模式

1.作用

        减少代码的重复

2.看例子说话

做这么件事:吃饭

第一步:感觉饿了;

第二步:思索要吃什么饭;

第三步:大吼:“妈妈,我饿了,我要吃什么什么;

第四步:妈妈说滚,自己做;

第五步:自己做好后,和妈妈一起吃饭;

第六步:自己再把锅给刷了,事件结束。

1.问题

到了晚上嘞,流程都差不多,唯一的区别在于第三步,大吼的内容有区别,我们在写吃米饭,吃面条吃牛排等的代码时,就会写大量的相同代码(除第三步外都相同)所以,我们需要搞模板模式,简化我们的工作,不用写那么多重复代码。

那么问题来了,我们要怎么办嘞

2.解决办法

        1.定义抽象类

        2.搞一个模板方法,将相同代码放进去;

        3.搞个抽象方法,具体实现交给子类去办;

public class Test {
    public static void main(String[] args) {
        System.out.println("hahahhahahahahahah");

        System.out.println("===========================吃米饭=====");
        Rice rice = new Rice();
        rice.eatProcess();//调用的是父类的方法

        System.out.println("===========================吃面=====");
        Noodles noodles = new Noodles();
        noodles.eatProcess();

    }
}

abstract class Food {         //此乃定义的抽象类
    final void eatProcess(){       //此乃模板方法,下面除了抽象方法,都是相同的代码  (final是为了防止子类瞎改代码,使模板出错)
        feel();
        reflection();
        shout();//调用抽象方法,运行时具体操作由子类完成
        cook();
        washPot();

    }
    void feel() {
        System.out.println("怎么这么快就饿了呢");
    }
    void reflection() {
        System.out.println("我得好好想想要吃点啥");
    }
    abstract void shout();//注意,此处时抽象方法
    void momReplies() {
        System.out.println("滚!!!,要吃自己做");
    }
    void cook() {
        System.out.println("妈妈,我做好啦,来吃饭啦!!!");
    }
    void washPot() {
        System.out.println("锅刷好了,吃饭解决完毕");
    }
}
class Rice extends Food {
    @Override
    void shout() {
        System.out.println("我得炫个米饭");
    }
}
class Noodles extends Food {
    @Override
    void shout() {
        System.out.println("我得炫个面");
    }
}

结果

ps:有啥不理解的可以再问我,咱互相讨论学习

pps:俺妈挺好的,欸嘿嘿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值