1.什么是责任链设计模式
责任链设计模式主要构成有抽象处理者、具体处理者、客户类,在处理请求的时候,将请求通过客户类发送至处理链路上,这样所有处理对象都有机会处理请求,使发送者与接受者解耦
在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理者解耦了。
2.责任链模式的优点/缺点和使用场景
使用责任链模式的优点:
- 发送者与接收方的处理对象类之间解耦
- 封装每个处理对象,处理类的最小封装原则
- 可以任意添加处理对象,调整处理对象之间的顺序,提高了维护性和可拓展性可以根据需求新增处理类,满足开闭原则
- 增强了对象职责指派的灵活性,当流程发生变化的时候可以动态的改变链内的调动次序可动态的新增或者删除
- 责任链简化了对象之间的连接。每个对象只需保持一个指向其后继者的引用,不需保持其他所有处理者的引用,这避免了使用众多的 if 或者 if···else 语句。
- 责任分担。每个类只需要处理自己该处理的工作,不该处理的传递给下一个对象完成,明确各类的责任范围,符合类的单一职责原则。
使用责任链模式的缺点:
- 不能保证每个请求一定被处理。由于一个请求没有明确的接收者,所以不能保证它一定会被处理,该请求可能一直传到链的末端都得不到处理。
- 对比较长的职责链,请求的处理可能涉及多个处理对象,系统性能将受到一定影响。
- 职责链建立的合理性要靠客户端来保证,增加了客户端的复杂性,可能会由于职责链的错误设置而导致系统出错