栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

用最通俗易懂的例子来谈模板方法模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用最通俗易懂的例子来谈模板方法模式

模板方法模式是什么?

简单来说,就是把重复的方法或固定的行为顺序封装成接口,个性部分由子类来实现即可!

通过案例来理解模板方法模式

通过银行取款或者存款的流程(取号,等待,取款/存款,评价)来理解模板方法模式!



1、首先定义父类,来吧一些公共的方法,行为顺序抽象出来!

abstract class Business{
    private Integer serialNo;
    
    public final void takeNumber(){
        System.out.println("我来取号了~~~");
        Random random = new Random();
        this.serialNo = random.nextInt(100);
        System.out.println("取到的号码为:" + this.serialNo);
    }

    
    public final void waiting(Integer serialNo){
        System.out.println(serialNo.intValue() + "号,在等待被叫那~~~");
    }

    
    abstract void sonShowTime(Integer serialNo);

    
    public Boolean isGoodevaluate(){
        return true;
    }

    public final void evaluate(Integer serialNo){
        if (isGoodevaluate()){
            System.out.println(serialNo.intValue() + "号给了五星好评!");
        }else{
            System.out.println(serialNo.intValue() + "号给了差评差评差评!");
        }
    }

    
    public final void process(){
        this.takeNumber();
        this.waiting(serialNo);
        this.sonShowTime(serialNo);
        this.evaluate(serialNo);
    }
}

2、子类根据自己的需要来实现相应的功能

class Deposit extends Business{

    @Override
    void sonShowTime(Integer serialNo) {
        System.out.println(serialNo + "号来存款了~");
    }

    @Override
    public Boolean isGoodevaluate(){
        return true;
    }
}


class WithdarwMoney extends Business{

    @Override
    void sonShowTime(Integer serialNo) {
        System.out.println(serialNo + "号来取款了~");
    }

    @Override
    public Boolean isGoodevaluate(){
        return false;
    }
}

3、测试调用

public class TemplateDemo {
    public static void main(String[] args) {
        Deposit deposit = new Deposit();
        deposit.process();

        System.out.println("-------------------------");

        WithdarwMoney withdarwMoney = new WithdarwMoney();
        withdarwMoney.process();
    }
}


模板方法模式的优缺点有哪些?

优点:

行为统一由父类控制,子类来实现细节,符合开闭原则!通过抽取重复部分,提高了代码的复用性

缺点:

如果父类添加新的方法,则可能造成牵一发而动全身如果子类太多,会提升阅读的复杂性



感谢大家的阅读,我是爱你三千遍,一个喜欢把简单问题复杂化,把复杂问题简单化的程序猿!

参考博客一
参考博客二

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703217.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号