责任链模式(Chain of Responsibility Pattern),顾名思义,为请求者和接受者之间创建一条对象处理链路,避免请求发送者与接收者耦合在一起!,
,责任链模式,是一种实用性非常强的设计模式,比较典型的应用场景有:,尤其是当程序的处理流程很长的时候,采用责任链设计模式,不仅实现优雅,而且易复用可扩展!,今天我们就一起来了解一下在 SpringBoot 中如何应用责任链模式!,在 SpringBoot 中,责任链模式的实践方式有好几种,今天我们主要抽三种实践方式给大家介绍。,我们以某下单流程为例,将其切成多个独立检查逻辑,可能会经过的数据验证处理流程如下:,
,采用责任链设计模式来编程,代码实践如下!,首先,我们定义一个简易版的下单对象OrderContext。,然后,我们定义一个数据处理接口OrderHandleIntercept,用于标准化执行!,接着,我们分别创建三个不同的接口实现类,并指定执行顺序,内容如下:,再然后,我们还需要创建一个订单数据验证管理器OrderHandleChainService,用于管理这些实现类。,最后,我们编写单元测试来看看效果如何!,执行结果如下:,如果需要继续加验证流程或者处理流程,只需要重新实现OrderHandleIntercept接口就行,其他的代码无需改动!,当然,有的同学可能觉得这种方法用的不习惯,不喜欢通过sort()来指定顺序,也可以通过如下方式进行手动add排序。,第二种实现方式,就更简单了,我们通过注解@Order来指定排序,代替手动方法排序sort(),操作方式如下:,运行单元测试,你会发现结果与上面运行的结果一致,原因Spring的ioc容器,支持通过Map或者List来直接注入对象,省去自己排序。,通过定义抽象类来实现责任链设计模式,还是以上面的案例为例,我们需要先定义一个抽象类,比如AbstractOrderHandle。,然后,分别创建三个处理类,并排好序号。,接着,创建一个责任链管理器,比如OrderHandleManager。,最后,我们编写单元测试,来看看效果。,运行结果与预期一致!,本文主要围绕在 SpringBoot 中如何引入责任链设计模式,介绍了三种玩法,其中第二种用法最多,其次就是第一种,第三种用的比较少,第三种本质是一种链式写法,可能理解上不如第一种直观,但是效果是一样的。,有效的使用责任链设计模式,可以显著降低业务代码的复杂度,可读性更好,更容易扩展,希望对大家有帮助!,
© 版权声明
文章版权归作者所有,未经允许请勿转载。