欢迎来到Vincentyw的博客

该来的终究会来,该走的也一定会离开。凡事都存在前因后果,因缘成熟了,果报便产生了,无法阻挡。
但是发生过了就会消失,有来就有走,一切都是过客,把握自己当下的因缘,承担起自己该承担的责任,做好眼前该做的事情,做的时候尽全力,过去便放下,放下即自在。

设计模式之模板模式

Template(模板模式)

一、模板模式简介

模板模式(Template Pattern),一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式

核心:

  • 1、一些方法通用,却在每一个子类都重新写了这一方法
  • 2、将这些通用算法抽象出来在抽象类实现,其他步骤在子类实现

二、模板模式优缺点比较

优点:

  • 1、封装不变部分,扩展可变部分
  • 2、提取公共代码,便于维护
  • 3、行为由父类控制,子类实现

缺点:

  • 1、每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大

使用场景:

  • 1、Junit单元测试、数据库访问的封装
  • 2、Spring JDBC Tmeplate

注意事项:1、为防止恶意操作,一般模板方法都加上 final 关键词

三、UML类图

四、设计实现

 步骤1:定义抽象模板类

public abstract class BankTemplateMethod {
    
    public void getNumber(String name) {
        System.out.println(name+"取号");
    }
    
    public abstract void transaction(String name);
    
    
    public void evaluation(String name) {
        System.out.println(name+"评价");
    }
    
    public final void doProcess(String name) {
        this.getNumber(name);
        this.transaction(name);
        this.evaluation(name);
    }
}

步骤2:定义实现模板抽象类的具体类

public class DrawMoney extends BankTemplateMethod {

    @Override
    public void transaction(String name) {
        System.out.println(name+"取钱");
    }
}

步骤3:调用者测试

public class TemplateDemo {
    
    public static void main(String[] args) {
        BankTemplateMethod btm = new DrawMoney();
        btm.doProcess("张三");
        System.out.println("-------------------------------------------------");
        btm = new BankTemplateMethod() {
            @Override
            public void transaction(String name) {
                System.out.println(name+"存钱");
            }
        };
        
        btm.doProcess("李四");
    }
}

步骤4:运行程序,观察结果

 

posted on 2020-04-08 22:55  VincentYew  阅读(171)  评论(0)    收藏  举报

导航