handler之责任链模式】的更多相关文章

https://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html…
(使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止.) 从名字中看出 ,系统中将会存在多个有类似处理能力的对象,当一个请求触发后,请求将在这些对象组成的链条中传递直到找到最合适的处理对象,并进行处理. 责任链模式是一种对象的行为模式,通常分为纯的责任模式和不纯的责任模式. 纯的责任链模式: 要求一个对象处理者只能选择不处理或者处理全部.且要求一个请求必须被某一个处理者所处理,不能出现请求为被处理的情况.…
/** * 责任链模式 * @author TMAC-J * 老板讲任务交给CTO,CTO自然不会亲自去做,又把人物分配给项目经理,项目经理再把任务分配给组长,组长再分配给个人 * 如果中途哪个环节出现了问题,比如项目经理请假了,组长直接接上,使得项目更加灵活 */ public class ResponsibleChain { abstract class Handler{ abstract void setNextHandler(Handler nextHandler); abstract…
在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的批准等的话.这个例子也就诠释了本文要介绍的内容.生活中的这个例子真是应用了责任链模式. 一. 责任链(Chain of Responsibility)模式 从生活中的例子可以发现,某个请求可能需要几个人的审批,…
职责链模式 chain of responsibility 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 动机 给多个对象处理一个请求的机会,从而解耦发送者和请求者. 从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中的下一个候选者.提交请求的对象并不明确地知道哪一个对象将会处理它,可以当做是一个隐式接受者. 沿着链发送请求,并保证接受者为隐式的,每个链上的对象都有一致的处理…
意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 适用性 在以下条件下使用: 有多个对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定. 你想在不明确指定接受者的情况下,向多个对象中的一个提交一个请求. 可处理一个请求的对象集合应该被动态指定. 结构 实现 实现一个邮件处理系统,将邮件按照类别交给不同的对象处理.已经分类的邮件…
一.模式解析 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任. 责任链模式的要点主要是: 1.有多个对象共同对一个任务进行处理. 2.这些对象使用链式存储结构,形成一个链,每个对象知道自己的下一个对象. 3.一个对象对任务进行处理,可以添加一些操作后将对象传递个下…
定义: 将具有相同接口的责任类串行在一起,解耦请求的发送者和处理者.沿着这条链进行请求,直到有对象处理它为止. 结构图: Handler:抽象处理类,定义了所有责任类处理方法的接口,不同的处理方法在子类中实现.同时持有一个其后续责任类的引用(successor),如果该请求能够被处理,则处理返回:如果不能被处理则转发给后续责任类进行处理. ConcreteHandler:具体处理类,实现了具体处理请求的业务方法.首先应当判断是否具体处理该类的权限,如果有则进行处理,如果没有则转发给继任者. 注意…
首先我们得先定义一个责任链模式: 责任链模式是一种线性执行流程,多个对象都有机会去执行同一个任务,只是在执行过程中, 由于执行的权利和范围不一样,那么当自己不能处理此任务时,就必须将这个任务抛给下一个对象, 一次类推,就形成了一个执行链. 典型例子就是Tomcat中的过滤器,当配置了多个过滤器时,就会形成一条过滤链,客户端发起 的请求会经过这条过滤链上的每一个过滤器,最终只有一个过滤器去处理这个请求. 纯与不纯的责任链: 1.纯的责任链是在整条链中,只有一个对象可以处理这个任务.不会处理完一半,…
一.引言 在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的批准等的话.这个例子也就诠释了本文要介绍的内容.生活中的这个例子真是应用了责任链模式. 二.责任链模式介绍 2.1 责任链模式的定义 从生活中的例子可以发现,某个请求可能需要几个人的审批,即使技术经理…
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止. 责任链模式是使用多个对象处理用户请求的成熟模式,它的关键是将这处理对象组成一个链.每个对象含有后继对象的引用,如果不能处理目前的请求就把它传给后继对象处理. 该模式中有两种角色: 1.处理者:是一个接口或者抽象类,规定了具体处理者处理用户请求的方法,还有设置后继对象的方法 2.具体处理者:是具体的处理者的实现. 本例子中,是一个查询用户身份证号码的例子,…
定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止. 首先来看一段代码: public void test(int i, Request request){ if(i==1){ Handler1.response(request); }else if(i == 2){ Handler2.response(request); }else if(i == 3){ Handler3.response(req…
责任链模式:定义 责任链接模式又称职责链模式,是一种对象的行为模式:它是一种链式结构,每个节点都有可能两种操作,要么处理该请求停止该请求操作,要么把请求转发到下一个节点,让下一个节点来处理请求:该模式定义了一些可能的处理请求的节点对象,请求的起点跟顺序都可能不一样,处理的节点根据请求的不一样而不同:请求者不必知道数据处理完成是由谁来操作的,内部是一个黑箱的操作过程,这是它的一个核心内容: 责任链模式:角色 抽象处理者角色:定义处理方法,以配置是否具有下个节点(Handler)对象; 具体处理者角…
在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任. 从击鼓传花谈起 击鼓传花是一种热闹而又紧张的饮酒游戏.在酒宴上宾客依次坐定位置,由一人击鼓,击鼓…
接下来我们将要谈谈责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求.但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整.先看看关系图: Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心,实例化后生成一系列相互持有的对象,构成一条链. public interface Handler…
责任链(Chain of Responsibility)模式 : 责任链模式是对象的行为模式.使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系.将这些处理对象连成一条链,沿着这条链传递该请求,直到有一个对象处理它为止.责任链模式强调的是每一个对象及其对下家的引用来组成一条链,利用这种方式将发送者和接收者解耦,类图如下: 通过上图可以看出责任链模式有两个角色: 抽象处理者(Handler)角色 :定义一个请求的接口.如果需要可以定义个一个方法用来设定和返回下家对象的引用. 具…
责任链模式(Chain of Responsibility Pattern) 介绍为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它.示例有一个Message实体类,某个类对它的操作有Insert()方法.现在要求根据插入信息的字符长度,让不同的对象去处理,这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它. MessageModel using System; using System.Coll…
中国古代对妇女制定了“三从四德”的道德规范,“三从”是指“未嫁从父.既嫁从夫.夫死从子”,也就是说一个女性,在没有结婚的时候要听从于父亲,结了婚后听从于丈夫,丈夫死了还要听儿子的,举个例子来说,一个女的要出去逛街,同样这样的一个请求,在她没有出嫁前她必须征得父亲的同意,出嫁之后必须获得丈夫的许可,那丈夫死了怎么办?一般都是男的比女的死的早,还要问问儿子是否允许自己出去逛街,估计你下边马上要问要是没有儿子怎么办?请示小叔子.侄子等等,在父系社会中,妇女只占从属地位,现在想想中国的妇女还是比较悲惨的…
以下内容出自:<<24种设计模式介绍与6大设计原则>> 中国古代对妇女制定了“三从四德”的道德规范,“三从”是指“未嫁从父.既嫁从夫.夫死从子”,也就是说一个女性,在没有结婚的时候要听从于父亲,结了婚后听从于丈夫,丈夫死了还要听儿子的,举个例子来说,一个女的要出去逛街,同样这样的一个请求,在她没有出嫁前她必须征得父亲的同意,出嫁之后必须获得丈夫的许可,那丈夫死了怎么办?一般都是男的比女的死的早,还要问问儿子是否允许自己出去逛街,估计你下边马上要问要是没有儿子怎么办?请示小叔子.侄子…
1      模式简介 责任链模式的简介: 1.        责任链模式为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推. 2.        责任链模式避免了请求的发送者和接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连成一条链,并且沿着这条链传递请求,直到有对象处理它为止. 3.        责任链上的处理者负责处理请求,客户只需要将请求发送到责任链上即可,无需关心请求的处理细节和请…
简介 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其[下家]的引用而连接起来形成一条链,请求在这个链上[传递],直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任. 责任链模式屏蔽了请求的处理过程,你发起一个请求到底是谁处理的,这个你不用关心,只要你把请求抛给责任链的第一个处理者,最终会返回一个处理结果(当然也可以不做任何处理),作为请求者可以不用知道到底是需要谁…
责任链模式:使多个对象都有机会处理请求,从而避免发送者和接受者之间发生耦合. 应用场景: 有多个对象可以处理请求,而处理程序只有在运行时才能确定 例如: 英雄联盟中伤害计算,伤害类型分为AP.AD.真实伤害(无视任何防御直接造伤害). 结构分析:整个结构就在这个攻击处理器的抽象.抽象一个属性,下一个处理器(newxHandler).抽象一个方法,处理攻击(handleAttack) -(void)handleAttack:(attack *)attack{ [nextHandler handle…
原文:乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern) 作者:webabcd 介绍 为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它. 示例 有一个Message实体类,某个类对它的操作有Insert()方法.现在要求根据…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40018231 责任链模式(ChainOfResponsibility): 有多个对象,每一个对象持有下一个对象的引用,形成一条链.请求在这条链上传递.直到某一对象决定处理该请求,可是发出者并不清楚终于哪个对象会处理该请求. 一.uml建模: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGh5X3ljdQ==/font/5a6L5L2T/fo…
什么是链?前后相连,一个连接下一个,其中包括多个节点,其实责任链模式也类似,他是多个对象之间相互关联,下一个对象的操作由上一个对象关联下来,上一个对象有个方法用于指向其他对象.职责链之间的前后关系是可以改变的,主要看上一节点主要指向哪个节点. android中事件分发就是责任链模式的具体表现: View的ontouchEvent返回值设置,如果为true,交个自己的消费事件的方法去处理,如果为false,则继续向下一个进行传递. 如何实现责任链模式: 比如责任链上有,A,B,C三个对象,如果A有…
责任链模式,主要是通过自己记录一个后继者来判断当前的处理情况.Handler中,再增加一个方法用于设置后继对象,如SetHandler(Handler obj). 然后Handler类以其子类的处理方法Handler()通过判断后继对象是否存在来操作: 1.没有设置后继对象,自己处理事件 2.有后继对象,交给后继者的Handler()处理. 通过这样的不断调用传递,处理责任将到达最终的对象上. 比如,当我们要处理一个网络请求返回时,一般肯定是写一串函数,然后通过判断来依次执行相应操作,如果采用责…
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt175 从击鼓传花谈起 击鼓传花是一种热闹而又紧张的饮酒游戏.在酒宴上宾客依次坐定位置,由一人击鼓,击鼓的地方与传花的地方是分开的,以示公正.开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒. 假比说,贾母.贾赦.贾政.贾宝玉和贾环是五个参加击鼓传花游戏的传花者,他们组成一个环链.击鼓者将花传给贾母,开始传花游戏.花由贾母传给贾赦,由贾赦传给贾政,…
责任链模式(Chain of Responsibility)接下来我们将要谈谈责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求.但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整.先看看关系图: Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心,实例化后生成一系列相互持有的对象,构成…
一.定义 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止. 主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了. 何时使用:在处理消息的时候以过滤很多道. 如何解决:拦截的类都实现统一接口. 二.结构 从责任链模式的定义可以发现,责任链模式涉及的对象只有处理者角色,但由于有多个处理者,它们具有共同的处理请求的…
今天来说说程序员小猿和产品就关于需求发生的故事.前不久,小猿收到了产品的需求. 产品经理:小猿,为了迎合大众屌丝用户的口味,我们要放一张图,要露点的. 小猿:......露点?你大爷的,让身为正义与纯洁化身的我做这种需求,还露点. 产品经理:误会误会,是放一张暴露一点点的,尺寸不大. 小猿:尼玛~能说清楚些吗,需求模棱两可的.不干,我要上报boss. 产品经理也一阵无语,这豆丁的事还上报boss.话说这上报也得走程序是吧,技术经理就不干了,"凭什么要跳过我,得经过我才能到boss".咦…