首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java责任模式

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

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

    Java责任模式(Chain of responsibility)

    在处理流程相关的业务的时候我们会经常碰到责任模式的使用,所以对于这种设计模式我们还是应该有所了解的,所以本文就来记录下。...责任模式 定义   将能够处理同一类请求的对象连成一条,所提交的请求沿着传递,上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给上的下一个对象处理。...添加新的处理对象:   由于责任的创建完全在客户端,因此新增新的具体处理者对原有类库没有任何影响,只需添加新的类,然后在客户端调用时添加即可。符合开闭原则。 ?...开发中常见的场景: Java中,异常机制就是一种责任模式。一个try可以对应多个catch,当第一个catch不匹配类型,则自动跳到第二个catch....Java语言中,事件的处理采用观察者模式。 Servlet开发中,过滤器的链式处理 Struts2中,拦截器的调用也是典型的责任模式

    4.4K21

    Java设计模式-责任模式

    责任模式: 将能够处理某一类请求的对象串成一条, 请求沿传递, 上的对象逐个判断是否有能力处理该请求. 使多个对象都有机会处理请求, 从而避免请求发送者和接收者之间的耦合关系....(图片来源: 设计模式: 可复用面向对象软件的基础) 优势: 发出请求的客户端并不知道上的哪个对象最终处理该请求, 这使得系统可以在不影响客户端的前提下动态地重新组织和分配责任....return count; } public void setCount(int count) { this.count = count; } } 注: 非链表实现责任...- 还可通过集合、数组等形式存储责任, 很多项目中, 每个具体的Handler并不是开发团队定义的, 而是项目上线后又外部单位追加的, 此时使用链表方式定义chain of responsibility...增强给对象指派职责的灵活性: 中对象自己并不清楚链结构,他们仅保持一个后继者指针, 因此责任可简化对象的相互连接, 且可以随时增加或修改处理请求的对象, 增强了给对象指派职责的灵活性.

    81490

    Java设计模式-责任模式

    Java设计模式-责任模式,我想这是值得你了解一下下的啦。 会了就当复习丫,不会来一起来看看吧。 很喜欢一句话:“八小时内谋生活,八小时外谋发展”。 如果你也喜欢,让我们一起坚持吧!!...都是夹杂着责任模式的。 2)概述: 在责任模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条。请求在这个上传递,直到上的某一个对象决定处理此请求。...发出这个请求的客户端并不知道上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。...责任(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条;当有请求发生时,可将请求沿着这条传递...当工作流程发生变化,可以动态地改变内的成员或者调动它们的次序,也可动态地新增或者删除责任责任简化了对象之间的连接。

    26010

    JAVA设计模式之责任模式

    在阎宏博士的《JAVA与模式》一书中开头是这样描述责任(Chain of Responsibility)模式的: 责任模式是一种对象的行为模式。...在责任模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条。请求在这个上传递,直到上的某一个对象决定处理此请求。...发出这个请求的客户端并不知道上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。...纯责任模式和不纯的责任模式 如果一个类要么承担责任处理请求要么将请求踢给下一个皮球,则被称为纯责任模式。 如果一个类承担了一部分责任,还将请求踢给下一个皮球,则被称为不纯的责任模式。...一般来说,日常开发中不纯的责任模式用的比较多一点。 参考: java责任模式

    74120

    java设计模式之责任模式

    ---- 一、责任模式(Chain of Responsibility Pattern) 有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条,请求在这条上传递,直到某一对象决定处理该请求...但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。...这就有点类似我们在java程序上的递归方法 (web应该中学习到的Filter其实就是一个责任设计模式) 二、demo: 定义一个接口 /** * Created by yjl...on 2020/11/29. * 责任模式:博文介绍链接:https://blog.csdn.net/qq_27471405/article/details/110340571 * 公众号:灵儿的笔记...* 责任模式:博文介绍链接:https://blog.csdn.net/qq_27471405/article/details/110340571 */ public class AFilter

    34920

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

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

    90210

    Java设计模式(四)责任模式

    责任模式是为客户端的请求创建了一个接收者对象的,也就是处理这个请求的对象有一串,如果一个对象不能处理,那么串上的其他对象继续处理。...责任模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。...比如okhttp中的拦截器配置,如果你是okhttp框架的开发人员,你不知道用户会去拦截什么路径,这个时候责任模式就体现它的作用。 我们要如何实现一个责任呢?...说到这里我想对于责任模式你已经有了一定的了解,那么接下来我们再说一下概念性的东西: 责任模式:() 意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条,并且沿着这条传递请求...使得对象不需要知道的结构。 3、增强给对象指派职责的灵活性。通过改变内的成员或者调动它们的次序,允许动态地新增或者删除责任。 4、增加新的请求处理类很方便。 缺点: 1、不能保证请求一定被接收。

    46710

    java设计模式(17)-责任模式

    责任模式: 责任模式:有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条,请求在这条上传递,直到某一对象决定处理该请求。...但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。关系图如下: ?...Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心,实例化后生成一系列相互持有的对象,构成一条。...此处强调一点就是,链接上的请求可以是一条,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。

    23920

    Java设计模式(十七)----责任模式

    击鼓传花便是责任模式的应用。责任可能是一条直线、一个环或者一个树结构的一部分。 三、结构  下面使用了一个责任模式的最简单的实现。 ?   ...这个角色通常由一个Java抽象类或者Java接口实现。上图中Handler类的聚合关系给出了具体子类对下家的 引用,抽象方法handleRequest()规范了子类处理请求的操作。   ...纯的与不纯的责任模式   一个纯的责任模式要求一个具体的处理者对象只能在两个行为中选择一个:一是承担责任,而是把责任推给下家。...纯的责任模式的实际例子很难找到,一般看到的例子均是不纯的责任模式的实现。有些人认为不纯的责任根本不是责任模式,这也许是有道理的。但是在实际的系统里,纯的责任很难找到。...如果坚持责任不纯便不是责任模式,那么责任模式便不会有太大意义了。

    1K90

    Java设计模式之责任模式

    什么是责任模式?责任模式是一种行为设计模式,用于将请求的发送者和接收者解耦,并将多个处理器对象组合成一条,依次处理请求。...责任模式的结构在Java中,责任模式包含以下几个关键组件:Handler(处理器):定义一个处理器接口,其中包含处理请求的方法以及设置下一个处理器的方法。...责任模式的实现步骤在Java中,实现责任模式通常包括以下步骤:定义处理器接口(Handler):定义一个处理器接口,其中包含处理请求的方法以及设置下一个处理器的方法。...构建责任:将多个具体处理器对象按照一定的顺序组合成一条。使用责任模式:根据具体业务需求,创建具体处理器对象,并将它们组合成一条,在客户端代码中使用责任模式处理请求。5....总结责任模式是一种非常有用的设计模式,可以帮助我们实现请求的分发、处理和传递。在Java中,责任模式被广泛应用于各种领域,如权限验证、日志记录和异常处理等。

    42510

    责任模式

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

    35630

    责任模式

    ,也叫责任模式(Chain of Responsibility Pattern) 职责模式 基本概念 为请求创建了一个接收者对象的(简单示意图)。...将这个对象连成一条,并沿着这条传递该请求,直到有一个对象处理它为止....departmentApprover.processRequest(purchaseRequest); viceSchoolMasterApprover.processRequest(purchaseRequest); } } 到这里就将责任模式的实际应用就讲完了...责任模式的总结 将请求和处理分开,实现解耦,提高系统的灵活性 简化了对象,使对象不需要知道的结构 性能会受到影响,特别是在比较长的时候,因此需控制中最大节点数量,一般通过在Handler中设置一个最大节点数量...采用了类似递归的方式,调试时逻辑可能比较复杂 最佳应用场景:有多个对象可以处理同一个请求时,比如:多级请求、请假/加薪等审批流程、Java Web中Tomcat对Encoding的处理、拦截器

    13310

    责任模式

    实例与代码 责任模式有纯的和不纯的. 纯的:当前接收者要么处理,要么传递给下一个处理者. 不纯的:当前接收者可以处理一部分之后交给下一个处理者....(去除掉了大量的if/else,同时,对责任的初始化也可以移到别的类中,这里不做操作.)...同时,极大的提高了扩展性,假设现在出现了第五种log级别,我们只需要重新编写一个子类,然后再责任中加入即可....我们可以再当前代码的基础上,提供一个四种级别LOG责任的门面,当没有发生变化时,直接调用门面的构造方法,会自动装配这几种LOG级别并构造成,这样可以复用代码,且没有破坏扩展性,当新增一个级别之后,我们可以选择建立新的门面...和模板方法的区别与联系 如果看过模板方法模式,会发现责任和模板方法有一点相似. 对应的关系为: handlerRequest方法为父类具体方法.

    57250

    责任模式

    顾名思义,责任模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。...主要解决:职责上的处理者负责处理请求,客户只需要将请求发送到职责上即可,无须关心请求的处理细节和请求的传递,所以职责将请求的发送者和请求的处理者解耦了。...使得对象不需要知道的结构。 3、增强给对象指派职责的灵活性。通过改变内的成员或者调动它们的次序,允许动态地新增或者删除责任。 4、增加新的请求处理类很方便。 缺点: 1、不能保证请求一定被接收。...责任模式的 UML 图 步骤 1 创建抽象的记录器类。...int DEBUG = 2; public static int ERROR = 3; protected int level; //责任中的下一个元素 protected

    90760

    Java网络编程--Netty中的责任

    设计模式 - 责任模式 责任模式(Chain of Responsibility Pattern)是一种是行为型设计模式,它为请求创建了一个处理对象的。...责任模式主要解决了发起请求和具体处理请求的过程解耦,职责上的处理者负责处理请求,用户只需将请求发送到职责上即可,无需关心请求的处理细节和请求的传递。 ?...责任模式的实现 责任模式的实现主要有四个要素:处理器抽象类,具体的处理器实现类,保存处理器信息,处理执行。...= null){ handler.doHandler(request); handler = handler.next; } } 链表形式的责任实现的具体代码示例: // 链表形式调用...对象 协议编码器 - 将Java对象转换成二进制数据 业务逻辑处理器 - 执行实际的业务逻辑 责任模式的运用,保证了Netty的高度可扩展性

    1.3K20

    Java 设计模式系列(15) —— 责任模式

    责任模式 责任模式的定义: 使多个对象都有机会处理请求,从而避免了请求发送者和请求接受者之间的耦合关系,将这些对象连城一条,并沿着这条传递请求,直到有对象处理它为止。...责任模式涉及的角色: Handler 抽象处理者:该角色对请求进行抽象,并定义一个方法以设定和返回对下一个处理者的引用 Concrete Handler 具体处理者:该角色接到请求后,可以选择将请求处理掉...,或者将请求传给下一个处理者 责任模式的简单示例 ?...); Response res = responseChain.processRequest(req); System.out.println(res.getRes()); } } 责任模式的优缺点和应用场景...责任模式优点: 将请求和处理分开,请求者不知道处理者是谁,处理者也不知道请求者的全貌 提高了系统的灵活性 责任模式的缺点: 性能低下,任何一个请求都是从头到尾的执行 调试不方便 责任模式要尽量避免中节点数量过多的情况

    27940
    领券