展开

关键词

设计模式之责任链模式(Chain of Responsibility)引入责任链模式责任链模式的实例责任链模式的分析责任链模式的应用

引入责任链模式 责任链模式的实例 责任链模式的分析 责任链模式的优势 责任链模式的应用 引入责任链模式 责任链模式描述的就是如何推卸责任,说的简洁点,就是踢皮球哈哈。 这就是责任链模式的基本思想 责任链模式的实例 实例的类图 ? 责任链模式的类图如下: ? 如果我们不采取责任链模式,那么请求者就必须要很清楚哪个处理者能处理它的请求,就必须对所有的处理者都有所了解,类似于上帝视角,然而在实际中,要求请求这了解这么多是不实际的 可以动态的改变责任责任链还有的好处就是可以动态的改变责任 推卸责任也可能导致处理延迟 我们可以责任链模式需要在责任链上传播责任,直至找到合适的处理对象。这样提高了程序的灵活性,但同时也出现了处理的延迟,因为有一个寻找的过程。

39410

责任链模式

实例与代码 责任链模式有纯的和不纯的. 纯的:当前接收者要么处理,要么传递给下一个处理者. 不纯的:当前接收者可以处理一部分之后交给下一个处理者. (去除掉了大量的if/else,同时,对责任链的初始化也可以移到别的类中,这里不做操作.) 同时,极大的提高了扩展性,假设现在出现了第五种log级别,我们只需要重新编写一个子类,然后再责任链中加入即可. 和门面模式思想的结合 可以发现我们在Test类中的构造责任链的代码很麻烦,且重复的可能性较高,比如在每个项目中可能LOG的级别只有那么多,却需要每次装配一次. 和模板方法的区别与联系 如果看过模板方法模式,会发现责任链和模板方法有一点相似. 对应的关系为: handlerRequest方法为父类具体方法.

35850
  • 广告
    关闭

    老用户专属续费福利

    云服务器CVM、轻量应用服务器1.5折续费券等您来抽!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    责任链模式

    顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。 通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。 4、增加新的请求处理类很方便。 缺点: 1、不能保证请求一定被接收。 责任链模式的 UML 图 步骤 1 创建抽象的记录器类。 = 1; public static int DEBUG = 2; public static int ERROR = 3; protected int level; //责任链中的下一个元素

    53860

    责任链模式

    介绍   责任链模式:为请求创建一个接收者对象的链,如果一个对象不能处理该请求,把相同请求转给下一个处理。 实现 场景:英雄杀中,当场上出一个群体锦囊,依次往下处理。

    16311

    责任链模式

    1.定义 责任链模式是行为型设计模式之一,它使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 2.实战演练 用三个BroadcastReceiver来演示责任链事件处理 FirstReceiver (当limit==1000的时候获取msg打印并退出,否则添加一个新的msg给下一个Receicer

    45350

    责任链模式

    责任链模式 责任链模式Chain of Responsibility Pattern为请求创建了一个接收者对象的链,其对请求的发送者和接收者进行解耦,这种类型的设计模式属于行为型模式,在这种模式中,通常每个接收者都包含对另一个接收者的引用 描述 在面向对象设计中,责任链模式是一种由命令对象源和一系列处理对象组成的设计模式。每个处理对象都包含逻辑,这些逻辑定义了它可以处理的命令对象的类型,其余对象将传递给链中的下一个处理对象。 增强给对象指派职责的灵活性,通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。 增加新的请求处理类很方便。 缺点 不能保证请求一定被接收。 bank有100RMB,paypal有200RMB,bitcoin有300RMB, 付款的优先顺序是bank然后paypal,然后是bitcoin, 当试图购买价值251RMB的东西,使用责任链进行采购 在这里,bank、paypal、bitcoin是链条上的环节,整个现象就是责任链。

    20200

    责任链模式

    责任链模式 责任链模式Chain of Responsibility Pattern为请求创建了一个接收者对象的链,其对请求的发送者和接收者进行解耦,这种类型的设计模式属于行为型模式,在这种模式中,通常每个接收者都包含对另一个接收者的引用 描述 在面向对象设计中,责任链模式是一种由命令对象源和一系列处理对象组成的设计模式。每个处理对象都包含逻辑,这些逻辑定义了它可以处理的命令对象的类型,其余对象将传递给链中的下一个处理对象。 增强给对象指派职责的灵活性,通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。 增加新的请求处理类很方便。 缺点 不能保证请求一定被接收。 bank有100RMB,paypal有200RMB,bitcoin有300RMB, 付款的优先顺序是bank然后paypal,然后是bitcoin, 当试图购买价值251RMB的东西,使用责任链进行采购 在这里,bank、paypal、bitcoin是链条上的环节,整个现象就是责任链。

    6630

    责任链模式

    概述 概念:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 意图及组成 责任链的意图是给多个对象赋予请求的权利,从而解耦发送者和接受者,该请求链对象会在一条链上一直传递直到其中有对象处理它,一个简单的模型如下: ? 责任链模式的结构主要包括Handler、ConcreteHandler和Client三部分。 在责任链模式中Client像Handler提交请求,请求在多个ConcreteHandler对象形成的对象链中传递,直到该请求被处理。 Handler(抽象处理者角色):定义出一个处理请求的接口。

    35550

    责任链模式

    责任链模式 (Chain of Responsibility Pattern) 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任 本博文以JavaWeb的Filter过滤器为例来类比说明,不了解过滤器的同学可以 实现 至此我们已经初步了解过滤器的基本使用了,这就是使用了责任链模式,主要包括的对象有: 请求、响应(Req、Resp) 过滤器接口(Filter) 过滤器链(FilterChain) 过滤器实现类(MyFilter ) 那么我们下面开始说明责任链模式(以一个请求响应为例) 2.1 请求响应对象 public class Request{ // 模拟request请求对象,实际上没有这么简单 // 这里用字符串表示请求内容

    11330

    开源即责任

    开源即责任 Free Software Movement 与 Open Source(开源)Free Software Movement (FSM) 是一个社会运动,而非仅仅是一个软件行业的运行模式。 开源的责任不知道为什么,一下子写了这么多字。因为一直在做掘金,每天和这么多中国开发者在一起,莫名地有了一些传播价值地责任感。 而我希望把这篇文章进行最后的总结:开源是为了更好地协作开发出解决用户需求的软件一但一个高复杂度的项目获得了高市占率,开发者则难以迁移为什么开源即责任? 这也就是为什么,开源即责任。当数亿台服务器运行着 Linux 服务的时候,那些躺在 Mailing List 里的一次次为哪怕一行代码的长篇争论,都让人无比敬畏。

    6010

    JavaScript责任链模式

    介绍 责任链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。 cBooks.push(book); }else { AddCBooks.successor(book); } } })() #2:扩展设置责任链的方法 /扩展window属性 window.setSuccessor=function (after,before) { after.successor=before;//引用的执行 } #3:设置责任链 ,将每个对象链接起来 //设置责任链-----串起来 setSuccessor(AddJsBooks,AddJavaBooks); setSuccessor(AddJavaBooks, } a.push(this[i]); } //返回过滤好数据 return a; }) } (6)规划责任

    22540

    设计模式——责任

    ,"").replace("性感","").replace("<","[").replace(">","]"); System.out.println(msg); } } 责任链 可以用一幅图来表示责任链这种设计模式的过程:  黑色的箭头可以理解为一个消息的输入,经过三个黄色过滤器后,最终输出到数据库或者其他地方。 引入新的责任链  再考虑一个问题,假如又有一系列的责任链,需要将新的责任链插在原责任链的中间执行(具体见下图),应该怎么做?   具体执行流程可以看下图: 服务器客户端责任链  新的问题,客户端Client发送一个消息,经过Filter1,Filter2,然后传给服务器端Server。

    29420

    守住责任,不忘初心!

    关于考研 一旦选择了考研这条路,必须做到以下几点: 守住责任,不忘初心! 制定计划,严格执行! 用尽全力,用尽全意! 不攒问题,不懂就问! 关于找工作 一旦选择了找工作这条路,必须做到以下几点: 守住责任,不忘初心! 依照兴趣,不要盲从! 工作没有,面试不止! 你的项目,烂熟于心! 关于出教程 一旦打算出教程,必须做到以下几点: 守住责任,不忘初心! 教程相关,必须要懂! 用尽全力,用尽全意! 不要照本宣科,不搞形式主义! 关于学习 一旦打算学习一个东西,必须做到以下几点: 守住责任,不忘初心! 认真学习,勤记笔记! 用尽全力,用尽全意! 不攒问题,不懂就问! 综上所述,无论你选择哪一条路,只要记住 8 个字——守住责任,不忘初心! ? ? ? 我的打算 ? ? ? 我的打算很简单,就是认真准备复试,毕竟我要守住责任,不忘初心!

    15820

    责任链模式妙用

    今天,通过本篇文章,让你对责任链模式也能够信手拈来。 本篇文章通过实际项目中的例子来让你认识何为责任链模式。 ? 定义 百度百科的介绍:责任链模式是一种设计模式。 我的介绍:顾名思义,责任链模式是一条链,链上有多个节点,每个节点都有各自的责任。当有输入时,第一个责任节点看自己能否处理该输入,如果可以就处理。如果不能就交由下一个责任节点处理。 因此,本篇文章核心,责任链模式的妙用——拆分代码就来了。 责任链模式拆分代码 这里以上面场景为例子进行拆分代码说明,其他场景相信大家能够举一反三。 1. 定义一个抽象类。 建立一个责任链管理类,管理所有 case。 至此,我们的责任链模式已经讲完了。 相信你对于责任链模式已经熟记于心了。 如果你还有点疑问 ? 可以留言,看下代码或者敲敲代码。 总结 本篇文章以实际项目中的场景为例,向你描述责任链模式的妙用。

    25930

    C# 设计模式 责任链 后退按钮使用责任

    责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。《JAVA与模式》 我们在 C# 也可以使用责任链。 首先我们需要一个接口IHandle接受我们的责任,在里面,最简单的责任链只有 Successor 和 Request AddSuccessor ,请看代码 public interface IHandle :Successor 处理责任:Request 添加处理责任的下一个:AddSuccessor 然后我们需要一个实际处理类,这个类集成接口IHandle。 新建一个类,这个类用做责任,通过这个类,可以做 MVVM ,如果对于这个不熟,请看 win10 uwp MVVM入门 本文告诉大家如何做出双击退出应用。 首先需要创建两个类作为责任链,请看下面。

    27410

    java责任链模式

    我们先看下责任链模式概念,百度百科。 责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。 请求在这个链上传递,直到链上的某一个对象决定处理此请求。 发出这个请求的客户端并不知道链上的哪一个对象最终处理 这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 首先我们先定义一个抽象类处理器作为整条链的开始节点。 spring-jcl-5.2.3.RELEASE.jar" com.wpw.iteratorpro.TestHandler A ok Process finished with exit code 0 责任链模式的好处就是使请求者和处理者之间减少耦合 ,“高内聚,低耦合”的特性,责任链模式打个比方就是我们生活中,我们常见的自行车链上的一节一节的环,动态的增减链上的处理者。

    15120

    责任链模式浅析

    这就是我们今天要聊的责任链模式可以做的事情。 一、责任链模式的基本介绍 1.1 意图 责任链的意图是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之前的耦合关系。 1.2 结构 责任链模式的基本结构如下: ? Handler 定义一个处理请求的接口。 ConcreteHandler 处理它所负责的请求 可访问它的后继者 二、责任链模式示例 本责任链模式示例模拟买东西打折扣,销售人员能处理9折以上的折扣;如果折扣低于9折向销售经理请示;同理,销售经理能处理 Discount ==> 0.95 SaleManager Discount ==> 0.88 AreaManager Discount ==> 0.75 折扣太低,真不能賣了~~ 三、小结 一个常见的责任链模式的代码是 责任链模式能够降低耦合度,使得一个对象无需知道是其他哪一个对象处理其请求。对象仅需知道该请求会被“正确”的处理。接收者和发送者都没有对方的明确的信息,且链中的对象不需要知道链的结构。

    19030

    行为型设计模式:责任链模式以及mybatis中的责任

    HandlerChain1 handlerChain1 = new HandlerChain1(); handlerChain1.handle(); } } 3.mybatis中的责任链 mybatis中的责任链使用了注解的方式来识别handler类,内部并没有实现,只是预留出接口。 RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Intercepts { Signature[] value(); } 责任链类 interceptors); } } 在实例化Executor、ParameterHandler、ResultSetHandler、StatementHandler这4个对象时,把这4个对象植入到责任链中

    21120

    设计模式----责任链模式

    责任链模式 引言 责任链模式定义 类图 角色 核心 示例代码 1、对请求处理者的抽象 2、对请求处理者的抽象 3、责任链的创建 责任链实现请假案例 案例类图 可扩展性 纯与不纯的责任链模式 纯的责任链模式 不纯的责任链模式 责任链模式主要优点 职责链模式的主要缺点 适用场景 模拟实现Tomcat中的过滤器机制 运行过程如下 分析Tomcat 过滤器中的责任链模式 参考文章 ---- 引言 一个事件需要经过多个对象处理是一个挺常见的场景 对责任链的理解,关键在于对链的理解,即包含如下两点: 链是一系列节点的集合,在责任链中,节点实质上是指请求的处理者; 链的各节点可灵活拆分再重组,在责任链中,实质上就是请求发送者与请求处理者的解耦。 纯的责任链模式 一个具体处理者对象只能在两个行为中选择一个:要么承担全部责任,要么将责任推给下家,不允许出现某一个具体处理者对象在承担了一部分或全部责任后又将责任向下传递的情况 一个请求必须被某一个处理者对象所接收 责任链模式综述(基础篇) 责任树模式(责任链模式+策略模式的组合) 浅谈springMVC中的设计模式(1)——责任链模式 责任链设计模式----过滤器模拟实现 ----

    12250

    设计模式-责任链模式

    责任链模式里面的很多对象对其下家的引用而形成一条连锁,请求在这个链条上传递,直到被处理完毕,而客户端并不知道链条上哪个链接点处理了这个事件。 Handler h2=new ConcreteHandler("handler2"); h1.setHandler(h2); h1.handle(); } } 在责任链模式当中 ,对处理者而言,一旦一个请求只有一个处理者处理了,称之为纯的责任链模式,然并卵,现实没有这么纯的责任链;那么不纯的就是一个请求被0个或多个处理者处理了,这个情况很常见。 责任链使得客户端请求与接收端处理减低耦合度,使得多个处理者都可以处理这个请求。这个链可以是一棵树,也可以是链表,也可以是个环。

    24010

    相关产品

    • 腾讯企点营销

      腾讯企点营销

      腾讯企点营销(TQDMKT )通过数字化、社交化营销闭环提升推广效果和透明度,智能线索分级个性互动。利用社交媒体、社群、微信公众号 等推广手段传播裂变以及社交媒体裂变传播分析,透视多渠道访问、互动、转化数据,识别关键转化点提升 ROI。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注腾讯云开发者

      领取腾讯云代金券