设计模式在结算系统中的实战

    结算系统主要是生成账单,当然账单有多种类型,不同账单生成的条件可能不同、账单数据组装可能不同、账单生成之后有不同的后续业务处理……

    个人对各个模式的理解和为何使用的理解:

一、模板方法模式的抽象类

  1.  多个业务处理流程一致,可以吧整个流程抽象到父类,在父类中定义整个流程的骨架。
  2. 公共的方法提升到父类,在父类实现、多个子类公用。
  3. 子类实现流程中自己使用的特殊处理

二、策略模式

  1. 策略模式是一个业务场景中需要的多种策略、算法的封装,这些算法是可以替换调用。
  2. 策略模式是面上策略抽象类编程,在业务代码无感知的情况下可以替换算法。
  3. 使用策略模式将业务代码和策略逻辑代码解耦。

三、责任链模式

  1. 对于一个请求有多个处理类,多个处理类按照链模式处理,处理结束
  2. 责任链对一个请求的处理抽象成一个处理抽象类,多个具体处理类实现处理抽象类并将自己添加到链管理类,在执行的时候执行所有链中的处理类。
  3. 使用责任链将一个请求的多个处理封装在各个处理实现类,如果对这类请求要添加其他过滤条件则不用修改原有业务逻辑,只需要继承抽象处理类。

四、观察者模式

  1. 当一个事件发生时需要多个对象有相应处理即多个对象关注一个事件时使用观察者模式。
  2. 观察者模式是多对多关系,即多个对象可以关注一个事件,也可以是一个对象关注多个事件,但大多数情况下是一个事件被多个对象关注。
  3. 责任链和观察者模式都是将业务逻辑和该请求、事件的相关处理解耦,方便扩展。

五、项目中设计模式的使用

 

设计模式在结算系统中的实战

 

  1. 整个账单生成使用方法模板模式、不同账单类型继承方法模板抽象类;模板抽象类中定义账单生成流程、骨架;模板抽象类中实现公共方法供各个子类使用,实现代码复用。
  2. 子类实现抽象校验方法;生成账单必要条件校验使用拦截器链来校验,各个拦截器做必要校验,如是否必填参数为空、是否重复入库、前置操作是否完成……,如果某个条件不满足则拦截器返回,业务流程执行中断。
  3. 子类实现账单对象获取抽象方法;账单bean对象获取可以使用建造者模式来获取。
  4. 子类实现消息发送结果处理抽象方法;具体处理使用观察者模式。

六、个人看法

  1. 设计模式的使用可能会增加部分代码的实现复杂度、阅读复杂度但是设计模式的适当使用可以降低代码耦合性、方便添加业务需求方便扩展、减少对代码改动的影响范围、从而确认测试范围、减少测试工作量。
  2. 如果对系统不熟悉、对业务不熟悉、对系统发展没有一个规划的话设计模式还是少用;如果没有整体规划则你的某种设计模式的使用和不适用没有区别而且还增加复杂度、代码量所以在系统中使用设计模式还是要对系统、系统业务要熟悉并且有一个规划,然后按照系统规划去设计实现,这样你的设计模式可能会发挥他的作用。

    到此设计模式相关文章就结束了,接下来可能会开始写JVM相关内容+JDK源码学习内容,希望和大家一起坚持、一起学习、一起成长!