责任链模式也叫作职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,责任链模式让所有的处理者持有下一个对象的引用,从而将请求串联成一条链,在有请求发生时,可将请求沿着这条链传递,直到遇到该对象的处理器。
在责任链模式下,用户只需将请求发送到责任链上即可,无须关系请求的处理细节和传递过程,所以责任链模式优雅地将请求的发送和处理进行解耦。
责任链模式在web请求中很常见,比如我们要为客户端提供一个rest服务,服务端要针对客户端的请求实现用户鉴权、业务调用、结果反馈流程,就可以使用责任链模式实现。
责任链模式包含以下三种角色。
- Handler接口:用于规定在责任链上具体要执行的方法。
- AbstractHandler抽象类:持有Handler实例并通过setHandler和getHandler()将各个具体业务Handler串联成一个责任链,客户端上的请求在责任链上执行。
- 业务Handler:用户根据具体的业务需求实现的业务逻辑。