18、模版方法模式(设计模式笔记)

一、场景

  • 客户到银行办理业务
    1、取号排队
    2、办理具体现金、转账、企业、个人、理财业务
    3、给银行工作人员评分

二、介绍

模版方法模式是编程中经常用到的模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤

三、核心

处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移给子类完成。即:处理步骤父类中定义好,具体实现延迟到子类中定义。就是一个回调过程

BankTemplateMethod.java

package cn.itcast.day249.template;
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();
    }
}

说明:从上面的类我们可以看到,一些固定的方法我们都已经实现,同时这些方法的调用过程(即模版)我们也已经实现,但是对于具体的业务方法需要在使用的时候去实现,此时我们只需要在子类中实现相关方法即可。

Client.java

package cn.itcast.day249.template;
public class Client {
    public static void main(String[] args) {
        BankTemplateMethod btm = new DrawMoney();
        btm.process();//调用process方法
        
        //更多的时候是采用匿名内部类
        BankTemplateMethod btm2 = new BankTemplateMethod() {

            public void transact() {
                System.out.println("存钱");
            }
        };
        btm2.process();
    }
}

class DrawMoney extends BankTemplateMethod{

    @Override
    public void transact() {
        System.out.println("取款");
    }
    
}

说明:如上,当我们在子类实现相关的方法之后,在使用的时候父类会调用此实现。

四、使用时机

实现一个算法时,整体步骤很固定,但是,某些部分易变。易变部分可以抽象出来,供子类实现

五、开发中常见的场景

  • 数据库访问的封装
  • Junit单元测试
  • servlet中关于doGet/doPost方法的调用
  • Hibernate中模版程序
  • springJDBCTemplate、HibernateTemplate
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,867评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,644评论 25 709
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 3,964评论 3 14
  • 德音171022初级班学员课堂随笔 静波 说到花到花道,非常感谢一个人。 张碧花姐姐,华侨城慈林茶舍的女主人,花...
    生活的眼镜阅读 309评论 0 0
  • 有关吉他的起源,曾有过这样一个美丽的传说。 太阳神阿波罗在原野追逐一位美丽的少女。 作为希腊神话中最多才多艺的神,...
    师小师阅读 819评论 0 1