scala的trait实现调用链模式

本文介绍了如何使用Scala的trait实现责任链模式,以处理支付过程中的校验,如签名校验和数据合法性校验。通过定义HandlerTrait,DataValidHandlerTrait和SignatureValidHandlerTrait等trait,形成调用链,实现不修改原有代码即可扩展校验规则的目标。在PaymentService类中,通过继承这些trait并调用handler方法,依次执行各个校验步骤。
摘要由CSDN通过智能技术生成

trait实现调用链模式
我们如果要开发一个支付功能,往往需要执行一系列的验证才能完成支付。
例如:
进行支付签名校验
数据合法性校验
如果将来因为第三方接口支付的调整,需要增加更多的校验规则,此时如何不修改之前的校验代码,来实现扩展呢?
责任链模式
在这里插入图片描述
trait调用链
在这里插入图片描述
类继承了多个trait后,可以依次调用多个trait中的同一个方法,只要让多个trait中的同一个方法在最后都依次执行super关键字即可。类中调用多个tait中都有这个方法时,首先会从最右边的trait方法开始执行,然后依次往左执行,形成一个调用链条。
示例
实现一个模拟支付过程的调用链
在这里插入图片描述
步骤
定义一个HandlerTrait特质
定义一个具体的handler方法,打印"处理数据…"
定义一个DataValidHandlerTrait,继承HandlerTrait特质
重写handler方法&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值