menbbo

导航

 

介绍

  客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象;

  让多个对象都有机会处理请求,避免请求者和接收者之间的耦合关系;

  有两个核心点:处理请求,将请求传递到下一个节点。

应用场景

  Tomcat对encoding编码处理,SpringBoot里面的拦截器、过滤器链;

  如果有多个对象可以处理同一个请求,但具体由哪个对象处理是由运行时刻动态决定的,这种情况可以使用责任链模式。

角色

  Handler抽象处理者:定义了一个处理请求的接口;

  ConcreteHandler具体处理者:负责处理具体请求,以及访问后续节点;

优点

  客户只需要将请求发送到责任链上即可,无需关心具体的实现细节;

  改变链内的调动他们的次序,允许动态的增加或删除处理类;

  符合开闭原则,可以根据需要增加请求处理类;

  满足单一职责原则,每个类只负责自己的工作;

缺点

  每个对象功能单一,如果逻辑复杂,则需要产生很多职责对象,会产生大量的细粒度职责对象;

  不能保证请求一定被接收,如果链路较长会影响系统性能,代码调试时也不太方便;

posted on 2022-03-07 22:43  menbbo  阅读(81)  评论(0编辑  收藏  举报