• Java模板模式(template)


    Java模板模式(template)

    https://blog.csdn.net/qq_38526573/article/details/88210977

    java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式

    模板模式
    模板模式介绍
      模板方法模式是编程中经常用得到的模式,它定义了一个操作中的算法核心,然后将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。
      换个说法就是某个流程的代码已经都具备了,但是其中某个节点的代码暂时不能确定,因此,我们采用模板方法模式,将这个节点的代码实现转移到子类中完成,即:处理步骤父类中定义好,具体的实现延迟到子类定义中。

    代码实现
      我们通过银行办理业务,排队区号来操作来模拟模板模式。

    /**
    * 父类
    * @author 波波烤鸭
    *
    */
    public abstract class BankTemplateMethod {
    /**
    * 具体方法
    */
    public void takeNumber(){
    System.out.println("取号排队");
    }
    /**
    * 办理具体的业务 钩子方法:抽象方法,交给子类去实现
    */
    public abstract void transact();
    /**
    * 具体方法
    */
    public void evaluate(){
    System.out.println("反馈评分");
    }

    /**
    * 模板方法!!!
    */
    public final void process(){
    this.takeNumber();

    this.transact();

    this.evaluate();
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    测试类

    public static void main(String[] args) {

    // 采用匿名内部类
    BankTemplateMethod btm1 = new BankTemplateMethod() {
    @Override
    public void transact() {
    System.out.println("我要存钱!");
    }
    };
    btm1.process();
    System.out.println("---------------------------");
    BankTemplateMethod btm2 = new BankTemplateMethod() {
    @Override
    public void transact() {
    System.out.println("我要理财!我这里有2000万韩币");
    }
    };
    btm2.process();
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    输出

    取号排队
    我要存钱!
    反馈评分
    ---------------------------
    取号排队
    我要理财!我这里有2000万韩币
    反馈评分
    1
    2
    3
    4
    5
    6
    7
    小结:银行为了方便顾客办理业务,所以制定了一套固定的业务流程。比如来了先取号排队,然后办理业务,然后评分。取号排队和评分这些功能银行可以实现,但是办理具体的业务就得具体的顾客来实现了。这就是模板模式。

    开发中常见的场景
    数据库访问的封装
    Junit单元测试
    servlet中的doGet和doPost方法
    Hibernate中的模板程序
    Spring中的JdbcTemplate,HibernateTemplate等

    ---------------------
    作者:波波烤鸭
    来源:CSDN
    原文:https://blog.csdn.net/qq_38526573/article/details/88210977
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    强联通 HDU 1269
    zznu 1255 数字统计(数位DP, 数学方法)
    POJ Round Numbers(数位DP)
    #1033 : 交错和
    XHXJ's LIS
    吉哥系列故事——恨7不成妻
    数字0-9的数量
    Balanced Number
    BALNUM
    F(x)
  • 原文地址:https://www.cnblogs.com/handsome1013/p/11213921.html
Copyright © 2020-2023  润新知