一、定义:使多个对象都有机会处理请求,从而避免请求的发送至和接受者之间的耦合关系。将这个对象连成一条链,并沿这条两传递该请求,一个处理完后,转给下一个。
责任链上的处理类可以都对请求做处理,也可以根据需求条件只有一个或者部分类对请求处理。
二、结构图
好处:
当客户提交一个请求时,请求是沿着链传递,每个责任类各自处理各自的逻辑,互不影响,而且可以随时添加或修改一个请求的结构,增强了给对象指派职责的灵活性,可以让process方法返回一个Boolean,表示是否要中断责任链,若某一个process方法返回了false,则后续的Responsibility 都不用执行了。
Responsibility
责任类的公共接口
public interface Responsibility {
boolean process(Request request, ResponsibilityChain chain);
}
ResponsibilityChain
责任链处理类
public class ResponsibilityChain {
private List<Responsibility> responsibilitys;
private int index = 0;
public Re