责任链模式

Sir*_*lot 3 design-patterns chain-of-responsibility

有人可以提供责任链模式的简单解释吗?我发现维基文章有点令人困惑.

Boz*_*zho 8

一个很好的例子是java servlet过滤器 - 在HTTP请求到达其目标之前执行的代码片段.

  • 链包含多个实例,每个实例执行不同的操作
  • 链中的每个实例都可以选择传播到下一个实例,或者停止流

因此,使用servlet过滤器,您可以拥有

  • 用于检查用户是否经过身份验证的过滤器.如果是,则过滤器传播到下一个过滤器

  • 下一个过滤器检查用户是否具有当前资源的权限.如果是,它会传播到下一个

  • 下一步记录当前请求URL和用户名,并始终传播到下一个

  • 链中没有其他内容,因此最终会调用目标对象

  • 是的,您可以通过“链”传递任何东西。在过滤器的情况下,您传递请求和响应:chain.doFilter(request, response) (2认同)