职责链模式主要包含以下角色。
1.抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。
2.具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者。
3.客户类(Client)角色:创建处理链,并向链头的具体处理者对象提交请求,它不关心处理细节和请求的传递过程。
责任链模式的本质是解耦请求与处理,让请求在处理链中能进行传递与被处理;理解责任链模式应当理解其模式,而不是其具体实现。责任链模式的独到之处是将其节点处理者组合成了链式结构,并允许节点自身决定是否进行请求处理或转发,相当于让请求流动起来。
一个支付场景支付分两块,一个是一次性的支付,一个是按月支付那种,两个基础类,都是抽象类,按月支付有一些校验还有一些权益发放类的接口做成一个抽象类,商品这种,都有用到,设计成一个普通方法,通过别的方法去调用,继承抽象方法这种,写单独的抽象方法去继承然后再重写当前的方法,比较公共的一些方法在父类里,定制化的再子类里去实现,比代码糅合在一起清晰很多,都是代码风格的设计,不影响功能。