设计模式之模板方法在业务中的应用

背景

之前有介绍我们业务中统一了异常处理,创建了StatusException,因为我们只能对外抛出StatusException,否则调用方就要考虑异常的处理方式,这是一种具有坏味道的代码,于是我们可能用用try catch包一层,然后捕获Exception,然后抛出统一的StatusException。这样是不是要每个方法都要做一次try catch呢? 大家是不是也想过AOP等方式呢?

今天给大家介绍一种设计模式-模板方法来解决这个场景,可能比较适合,但不是唯一的方式,

代码实战

设计模式之模板方法在业务中的应用

错误状态的枚举

定义错误状态枚举,两个属性,错误码和描述

设计模式之模板方法在业务中的应用

统一异常:StatusException

统一异常定义,所有业务或接口,返回除了正确的返回值,只能返回该异常信息,不允许返回其他异常(开发要求,非必须)

定义error静态方法,参数为ErrorStatus,返回自定义的异常

设计模式之模板方法在业务中的应用

设计模式之模板方法

此处划重点,考试要考,哈哈

模板中三个方法,还涉及到泛型

checkParam:用于校验参数

process:需要实现的方法

execute:模板执行方法:该方法定义了方法的执行顺序,并对方法进行了异常捕获,然后抛出统一StatusException

再看业务代码实现逻辑

设计模式之模板方法在业务中的应用

业务代码

重点看save方法

1的位置为覆盖了checkParam,对参数进行校验,校验失败抛出统一的StatusException

2的位置为save方法的实现逻辑机返回值

3的方法为调用了模板方法的执行方法,调动执行方法就按照模板方法中的顺序执行,如果遇到异常统一抛出

通过这个模板方法就解决了每个方法都要try catch的坏味道,当然也可以通过aop方式实现,见仁见智,解决问题最重要


分享到:


相關文章: