记一次对java抽象封装的理解和实践

本文探讨了在使用EasyExcel解析Excel时,如何通过创建抽象子类并定义接口来封装数据校验和保存逻辑,以避免业务逻辑混杂导致的错误。通过异常捕获确保单行数据错误不会中断整个文件的解析,提高了解析大文件的安全性和可靠性。

父类是easyexcel的AnalysisEventListener类,用于写解析excel的业务逻辑
结构如下

/**
 * @author jipengfei
 */
public abstract class AnalysisEventListener<T> {

    /**
     * when analysis one row trigger invoke function
     *
     * @param object  one row data
     * @param context analysis context
     * 这个方法,解析一行则会被调用一次  T为一行的excel数据
     */
    public abstract void invoke(T object, AnalysisContext context);

    /**
     * if have something to do after all  analysis
     * 这个是所有解析完成之后会被调用的方法
     * @param context
     */
    public abstract void doAfterAllAnalysed(AnalysisContext context);
}

一般都是继承这个父类,然后重写这两个方法来实现自己的业务逻辑,比如说校验数据,保存数据等。

但是仔细想想,比如说我在invoke里面,必定要执行的逻辑有,1.数据校验 2.数据保存 3.异常捕获。

这三个逻辑,任由开发自由发挥,混杂在一起,不明晰不说,还容易出错,比如说现在项目到处乱飞的空指针异常和各种没有catch住的异常。
特别是,开发没有注意到的异常,一旦抛出,会中断整个解析,如果catch住了这个异常,只会影响到这一行数据,而不会中断整个文件的解析, 特别是当文件比较大 数据比较多的时候,尤其重要!

思路,再次定义一个抽象子类,定义handler接口,保存数据, 定义varify接口,校验数据 ,同时组合在一起,try catch 住这两个方法,以免有开发没有注意到的异常

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值