模版方法模式

模版方法模式:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以不改变一个算法的结果即可重定义该算法的某些特定步骤。
在这里插入图片描述

比如说:要输入一个excel文件, 然后需要对该文件内容进行校验,校验完成之后 插入数据库。
算法的步骤就是: 校验->落库

但是不同的文件,里面的数据不同,比如说订单的线下数据excel, 款项的线下的数据excel 等等,这样的话 校验的逻辑不同,最后要落到的具体数据库表也不同,订单要落到order表,款项要落到item表。

这样就可以将校验的方法和落库的方法抽象出来,留到子类中去实现,比如说订单导入的子类,款项导入的子类。

定义抽象的模版父类

public abstract class AbstractClass {

  private   String File;



    public  void importFile(String File){
        try {
            valid(File); //先校验
            dohand(File);//进行处理
        }catch (Exception ex){
            ex.printStackTrace(); //记录异常
        }

    }


    public abstract Boolean valid(String File);

    public abstract void dohand(String File);
}


定义子类

public class ImportFile extends AbstractClass {
    @Override
    public Boolean valid(String File) {
        System.out.println("执行验证"+File);
        return Boolean.TRUE;
    }

    @Override
    public void dohand(String File) {
        System.out.println("执行处理"+File);
    }
}

定义应用

public class Aplication {
    public static void main(String[] args) {
        ImportFile importFile=new ImportFile();

        importFile.importFile("文件A");
    }
}

输出结果:
在这里插入图片描述

先执行valid再执行dohand ,但是子类无需关心具体的步骤逻辑,只需要把每一步的方法实现好就行。

这里有一个真实的线上例子
https://blog.csdn.net/qq_20009015/article/details/90245872

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值