设计模式 – 责任链模式 介绍: 责任链模式是一种动态行为模式,有多个对象,每一个对象分别拥有其下家的引用.连起来形成一条链.待处理对象则传到此链上,在此链进行传递,且待处理对象并不知道此会被链上的哪个对象处理,这使得我们能够动态的添加链上的对象而且分配责任. 纯责任链和非纯责任链 责任链分为两种.纯责任链和非纯责任链. 纯责任链是待处理对象request在处理对象handler链上传递,每一个处理对象handler处理request的一部分,到终于处理完毕.非纯责任链则是待处理对象reques…
声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 之前在最开始就聊了Python设计模式有三种,其中关于创建型和结构型设计模式基本都已经聊了,那么现在来聊聊关于Python设计模式的 行为型设计模式 . 行为型设计模式: 用来处理系统实体之间通信的设计模式. 接下来,聊一下关于行为型设计模式的第一种 --  责任链模式. 责任链模式 根据<精通Python设计模式>书中介绍如下: 责任链模式 -- 用于让多个对象处理一个请求…
[设计模式]Java设计模式 - 责任链模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 目录 [设计模式]Java设计模式 - 责任链模式 拦截器 1.接口提供 2.定义拦截器接口Interceptor 3.定义拦截器实现类 4.采用JDK动态代理的方式使用拦截器 5.实例 责任链模式 1.定义拦截器 2.责任链上使用拦截器实例 拦截器 拦截器可以拦截目标方法,进行一系列的操作.也可以取代代理对象的方法等功能.以下代码用JDK…
在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的批准等的话.这个例子也就诠释了本文要介绍的内容.生活中的这个例子真是应用了责任链模式. 一. 责任链(Chain of Responsibility)模式 从生活中的例子可以发现,某个请求可能需要几个人的审批,…
责任链模式可以用来消除请求的发送者和接收者之间的耦合.这是通过实现一个由隐式地对请求进行处理的对象组成的链而做到的.链中的每个对象可以处理请求,也可以将其传给下一个对象. 责任链的结构: 责任链由多个不同类型的对象组成,发送者是发出请求的对象,而接收者则是链中那些接收这种请求并且对其进行处理或者传递的对象.请求本身有时也是一个对象,它封装着操作有关的所有数据.其典型的运转流程大致如下: 发送者知道链中的第一个接收者.它向这个接收者发出请求. 每一个接收者都对请求进行分析,然后要么处理它,要么将其…
今天来说说程序员小猿和产品就关于需求发生的故事.前不久,小猿收到了产品的需求. 产品经理:小猿,为了迎合大众屌丝用户的口味,我们要放一张图,要露点的. 小猿:......露点?你大爷的,让身为正义与纯洁化身的我做这种需求,还露点. 产品经理:误会误会,是放一张暴露一点点的,尺寸不大. 小猿:尼玛~能说清楚些吗,需求模棱两可的.不干,我要上报boss. 产品经理也一阵无语,这豆丁的事还上报boss.话说这上报也得走程序是吧,技术经理就不干了,"凭什么要跳过我,得经过我才能到boss".咦…
提出问题: 最初接触责任链模式就是在struts2中,在当时学的时候看了一眼,大概知道了原理,最近在复习,模拟struts2,说是模拟只是大体模拟了struts2的工作流程,很多东西都是写死的,只是为了弄懂工作流程. 介绍: 看过很多介绍struts2的文章中,都详细的介绍了struts2的拦截器,struts2的拦截器是一个很好的结构,这个拦截器就是应用了责任链设计模式,很多用户的请求都会到这个拦截器中进行处理,我们事先不知道哪个地方会处理这个请求,先把请求传给责任链中的第一个处理者,如果第一…
责任链模式属于行为型设计模式之中的一个,怎么理解责任链?责任链是能够理解成数个对象首尾连接而成,每个节点就是一个对象.每个对象相应不同的处理逻辑,直至有一个对象响应处理请求结束.这一种模式成为责任链模式. 生活中能够找到责任链模式的原型吗?这样的样例非常多.比方你要去买房子.首先是销售人员(对象1)接待你.你说想要百分之3的折扣,没问题.这时销售人员就有打百分之三折扣的权限,销售人员(对象1)进行处理.这时来了一个土豪.说要买10套,要百分之五的折扣.销售人员(对象1)没有百分之五折扣的权限.必…
责任链模式更像是一种简化多种场景下调用处理的一种设计模式,特别适合if-else分支判断很多的场景.比如是根据不同会员等级给予不同的优惠力度. 它的定义:对象的调用是由下家的应用连接起来的处理链.一直不断在链上传递,直到有某个对象可以处理为止. 我个人的理解:就像一个人要举报某个高官贪污,要先从当地法院进行提案举报,当地法院权限不足,然后将这个事儿继续上报给中级人民法院,中级人民法院发现无权处理,又把举报再上报给最高法,in the end 最高法依法受理. 它的好处: 1.解耦.使用单一职责的…
引子 一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式来实现.现在以请假流程为例,一般公司普通员工的请假流程简化如下:普通员工发起一个请假申请,当请假天数小于3天时只需要得到主管批准即可:当请假天数大于3天时,主管批准后还需要提交给经理审批,经理审批通过,若请假天数大于7天还需要进一步提交给总经理审批. 简单的流程可以通过 if-else 即可实现: public class Leav…