zoukankan      html  css  js  c++  java
  • 责任链模式(Chain Of Responsibility Pattern)

    标签: 设计模式


    简介
      责任链模式是行为型模式

      为请求创建了一个接收者对象的。每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

      使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止(不一定有)。

    应用
      Struts2的拦截器(Interceptor),jsp servlet的过滤器(Filter)。

    优点
      发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。

    UML类图

    角色

    抽象处理者(Handler):定义一个处理请求的接口,和一个后继处理者。
    具体处理者(ConcreteHandler): 注入一个后继处理者。首先处理它所负责的请求,如果可以处理请求则处理,否则将该请求转给他的后继处理者。
    客户类(Client):向一个链上的具体处理者ConcreteHandler对象提交请求。

    纯的与不纯的责任链模式
      一个的责任链模式要求一个具体的处理者对象只能在两个行为中选择一个:一是承担责任,二是把责任推给后继。不允许出现某一个具体处理者对象在承担了一部分责任后又把责任向下传的情况。
      一个不纯的责任链模式里面,一个请求可以最终不被任何接收端对象所接收。允许某一个具体处理者对象在承担了一部分责任后把责任向下传的情况。
      纯的责任链模式的实际例子很难找到,一般看到的例子均是不纯的责任链模式的实现。

  • 相关阅读:
    C# 中使用using的三种方法
    RabbitMQ系列文章
    c# 枚举(Enum)
    c# 占位符 {0} {1}
    C#中Lambda表达式总结
    c# 类型转换 int.TryParse() 方法,日期转换
    sql select 0 字段 某字段是不在指定的表,编一个字段
    Apache服务器安装配置(win版)
    安装 Apache 出现 <OS 10013> 以一种访问权限不允许的方式做了一个访问套接字的尝试
    windows安装Apache HTTP服务器报错:无法启动,因为应用程序的并行配置不正确
  • 原文地址:https://www.cnblogs.com/banyu/p/6713199.html
Copyright © 2011-2022 走看看