深入浅出:什么是基于Java的责任链模式
1、责任链模式就是这种“推卸”责任的模式,你的问题在我这里能解决我就解决,不行就把你推给另一个对象。至于到底谁解决了这个问题了呢?我管呢!
2、责任链模式由两个角色组成:
1) 抽象处理者角色(Handler):它定义了一个处理请求的接口。当然对于链子的不同实现,也可以在这个角色中实现后继链。
2) 具体处理者角色(Concrete Handler):实现抽象角色中定义的接口,并处理它所负责的请求。如果不能处理则访问它的后继者。
至于类图不放也罢。毕竟就是一个继承或者实现。
3、从名字上大概也能猜出这个模式的大概模样——系统中将会存在多个有类似处理能力的对象。当一个请求触发后,请求将在这些对象组成的链条中传递,直到找到最合适的“责任”对象,并进行处理。
《设计模式》中给它的定义如下:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
从定义上可以看出,责任链模式的提出是为了“解耦”,以应变系统需求的变更和不明确性。
下面是《设计模式》中给出的适用范围:
1) 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2) 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
3) 可处理一个请求的对象集合应被动态指定。
责任链模式是将请求的处理对象像一条链条组合起来,形成对象链。这样做的好处就是请求并不需要知道处理对象是哪一个,实现了请求和处理对象的解耦。
首先先看使用责任链经典的三个地方
1.servlet中的Filter
FilterChain执行第一个filter时,执行filter.doFilter方法时会把下一个filter通过参数传递形式传入。如何维护filter链式关系,可以通过一个集合或者数组。比如说ApplicationFilterChain就维护了一个List<FilterConfig>数组,每次调用可以外部控制条用或者通过参数传递形式。
2.dubbo中的Filter(ProtocolFilterWrapper)
原理就是新建一个invoker包装Filter,Filter.invoke方法会传入前一个invoker,循环调用就会形成一个调用链条。新建的invoker担任的角色就是包装filter,并且设置包装filter后置处理器。实际初始invoker就是执行终点。
3.mybatis中的interceptor
mybatis通过动态代理来实现责任链模式。Mybatis支持对Executor、StatementHandler、PameterHandler和ResultSetHandler 接口进行拦截,也就是说会对这4种对象进行代理。mybatis会生成被拦截接口对象的动态代理类,动态代理类相当于是被拦截对象和拦截器的包装类,动态代理类有个target属性保存被拦截对象,执行时先执行拦截器方法,执行成功调用被拦截对象。动态代理类还可以被拦截再次生成新的动态代理类,每次生成新的都会保存上一个动态代理类,从而实现链式调用。
mybatis的分页就是通过拦截器的形式实现的。
拦截器比较重要的两个方法plugin、intercept。
plugin是对哪些情况进行拦截,拦截时会生成被拦截对象的动态代理类,intercept是实际拦截执行的操作,这个方法会最终调用invocation.proceed执行操作。
构成链式调用的关键是 Plugin interceptor.intercept(new Invocation(target, method, args)) 动态代理类会将被代理对象传入拦截器方法,实际调用就是被拦截对象,当多次包装时,被代理对象仍然是个代理类,就构成了链式调用。
从上面三个例子可以看出来,实现责任链模式关键在于两个角色抽象处理类和具体处理类,类图如下
下面以一个审批金额例子来简单说明这个模式的应用
员工审批金额不能超过500,领导审批金额不能超过1000,经理审批金额不能超过10000。
抽象员工处理类
职员处理类
领导具体处理类
经理具体处理类
Client类 设置具体处理类的后继关系
目前自己还没有动手实现责任链场景,等以后遇到这边继续更新
有人说是利润,还有人说是权力,其实,利润和权力都具有随意性和不可持续性,它们不可能成为企业发展的长久驱动力。
企业中环环相扣的“责任链”才是企业发展的动力。
在企业中,一切关系都是“责任的关系”,每一个看似独立的责任都与上下、左右的关联者构成“责任链”。比如,横向的岗位与岗位之间是责任关系,纵向的上级与下级之间也是责任关系,等等,他们之间形成了环环相扣、相互依存的“责任链”,每一个责任和岗位都被其相关联的责任驱动着,由此形成了企业发展源源不断的动力。如果哪一环的责任或岗位出现了混乱,应该承担的责任没有被承担起来,企业里的“责任链”就会像多米诺骨牌一样轰然倒塌。
为了避免责任链的断裂,每一位员工都要坚守自己的责任,落实好自己的责任。
有一家企业频频出现产品不合格的问题,管理者几经商讨,最后提出了一种前所未有的方法来解决产品的质量问题。
这个方法就是推行上下工序的索赔制度,简单说来就是,当一道工序出现问题的时候,处于这一工序的员工有权向上一道工序的员工追究责任,直到找到问题为止。所以,每一道工序的员工都有责任去监督上一道工序的质量问题。为保证这一制度的顺利进行,企业还专门成立了以工人为主题的索赔仲裁委员会,专门处理员工的责任纠纷问题,处理到最后,70%的纠纷都由员工自己处理了。
从这个案例我们可以看到,每一个责任或者岗位都不是独立存在的,都与上下左右的责任关联者构成相互的责任承担。对上一道工序来说,它承担着考核与监督的责任;对于下一道程序来说,它又是责任的承担者,如果它不能很好地落实自己的责任,下一道工序就要受自己的影响,从而完不成任务,就会向它索赔。于是,责任就是在这样的环环相扣中,实现了“责任链”的构建。
员工坚守自己的责任,落实自己的责任,不让任何一根“责任链”断裂,从而保障企业的运营安全,为企业这艘大船顺利运行保驾护航。
责任心不强的主要表现:
1、领导者:
表里不一,我行我素;争权夺利,相互攻击;固执偏狭,顾此失彼;表面繁荣,内部空虚。
2、干部队伍:
思想上私;行动上差;作风上软;品德上贪。3、员工:
缺乏主人翁责任感;缺乏认真负责精神;缺乏团队精神;缺乏创造精神。
工作标准不高;精神状态不佳;工作落实不力;小事不愿干,大事干不了;不愿意接受领导交办的工作;纪律观念不强。
责任心不强的根源:
1、源于人的懒惰天性。
2、源于学习教育的缺失。
3、源于制度不完善。
4、源于监督不力。
5、源于管理者缺乏经验、能力和技巧。
责任心:
1、责任心首先是对自己的负责。
即一个人要懂得尊重自己的感情,尊重自己的理想,珍惜自己的宝贵年华和生命的活力,从自己的理想出发来安排现实生活。责任感的形成是一个人成熟的标志,无论你做什么事,都是为自己。
2、责任心是对自己所在的集体负责。
一个人的责任心如何,决定着他在工作中的态度,决定着其工作的好坏和成败。如果一个人没有责任心,即使他有再大的能耐,也不一定能做出好的成绩来。
有了责任心,才会认真地思考,勤奋地工作,细致踏实,实事求是;才会按时、按质、按量完成任务,圆满解决问题;才能主动处理好分内与分外的相关工作,从事业出发,以工作为重,有人监督与无人监督都能主动承担责任而不推卸责任。
3、责任心是成就事业的可靠途径
责任心出勇气、出智慧、出力量。有了责任心,再危险的工作也能减少风险;没有责任心,再安全的岗位也会出现险情。责任心强,再大的困难也可以克服;责任心差,很小的问题也可能酿成大祸。
一、是自己的责任心
陶行知先生说:“人生天地间,各自有秉赋,为一大事来,做一大事去。”为此,要使孩子认识到自己是有价值的,要树立自信心,只要努力,克服困难,勇往直前,就一定能获得成功。而成功的喜悦,又可以增强孩子的自立、自强的意志力,从而对生活、对人生充满憧憬,充满自信。热爱生活,珍惜生命是对自己的责任心的最突出的表现。
二、是对他人的责任心
在现代社会,公共生活领域不断扩大,人们相互交往日益频繁,团结协作更加突出。因此,人生在世,不仅要对自己负责,更要对他人负责。诚实守信,乐于助人,舍己救人,一方有难,八方支援,都体现了对他人负责的精神,教育孩子尊重、关心、理解和信任同学,遇到别人有困难时,要挺身而出,无私相助。同时,不做伤害他人、损人利己的事。同学之间和睦相处,共同进步,逐步养成团结协作的精神。
三、是对学习的责任心
学习是学生的基本任务。树立为国家做贡献,为实现个人的人生理想和价值的学习动机和目的尤为重要。培养孩子良好的学习习惯,踏实认真的学习态度,刻苦钻研,独立思考,勇于创新的进取精神。对于布置的学习要求、学习任务,要进行严格的检查,表扬认真负责的学生,批评不负责任的学习行为。只有表扬,没有严肃的批评、矫正,是不能培养孩子养成学习的责任心的。
四、是对家庭的责任心
孝敬父母、尊老爱幼,是中华民族的传统美德。古诗“临行密密缝,意恐迟迟归,难言寸草心,报得三春辉。”以及歌曲“常回家看看”,表达了母子之间的真挚情感,反映了对家庭、对父母责任心的呼唤和赞美。适时采取多种形式,有目的的帮助孩子培养这种责任心,让他们懂得:父母有养育子女的义务,但他们茹苦含辛,数十年如一日的抚育之恩,孩子应当予以报答,应当对家庭尽必要的义务,热爱父母,热爱家庭里的每一个成员,使家庭和睦幸福、父母家人愉快健康。
世上没有不可或缺的人,但只要生而为人,就有了不可推卸的责任。援引美国前总统罗纳德·里根的名言,“假如我们不做,谁来做?假如现在不做,何时做?”在责任面前是否迈前一步,不取决于能力,而在于那一点品质。只有人人从自我做起,从当下做起,全社会才有一环扣一环的责任链条,不致于沦为道德海洋里的“泰坦尼克”。
责任其实出自人的良知,它体现在日常的点点滴滴。就像上班面对客户微笑,生产讲求真材实料,出行不随地丢一堆垃圾,执法能依照心中的公平正义……这些看似普通,却都印着“责任”两个大字。责任无小事,担责是本事。当越来越多人对一言一行负责,将自己的分内之事做好,整个社会就多了互信,人们也将生活得更加省心。
责任无疑是负担,但正如梁启超所说,“人生须知负责任的苦处,才能知道尽责任的乐趣。”任何人在世上都不可能孤立生存,相互依靠必然要求相互负责。难以想像,现实中存在一个毫无责任、义务的人,要么说明他没有存在的必要。人生的价值,取决于自身承担的责任。了无牵挂、无责可担是极大的悲哀,而能够杠起别人的期望则是一种快乐。即使最懒惰的人,也想证明自己有用,而担责就是他在社会的用场。
责任心从根本上是面向自己的。假如一个人对自己都不负责,怎么可能对别人负责?自我担当是对其他人担当的前提,也是对社会担当的基石。一切的负责,首先源于对自己的人格、尊严和行为负责。因此,唤醒对自我的责任,也会随之激活对社会的责任心,从而更可感知自己存在的重要,通过极大地发掘体内潜能,努力实现自身价值与社会价值的统一,充分体现生命的意义。
二是完善制度明确职责。2019年,国家防总进一步修订完善了《各级地方人民政府行政首长防汛抗旱工作职责》,并且下发执行。明确各级地方人民政府行政首长对健全组织指挥体系,落实防汛抗旱的责任,加强应急能力建设,组织方案预案的修订,组织开展台风的防御,灾后的救助和恢复重建等14个方面的职责予以明确。
三是强化督导检查。国家防总汛前派出了7个部级领导带队的检查组和7个专家组到大江大河和重点地区对防汛抗旱防台风的准备工作进行了检查。其中,检查的一项重点内容就是检查各地防汛抗旱行政责任落实的情况。针对检查发现的问题提出整改的要求。
四是狠抓新上任责任人的培训。大家知道今年是换届年,地方政府特别是市、县、乡的政府都在集中换届,新上任的防汛抗旱行政责任人比较多,所以组织开展防汛抗旱指挥长的培训4.1万余人次,并且我们多次派出专家到地方去指导授课,督促地方加强责任落实。
五是各地压实防汛抗旱的责任。各级防指都及时完成了防汛抗旱行政责任人的调整工作,提前公布防汛抗旱责任人名单,相关省级防指在暴雨洪水发生前和洪水、台风过程中多次组织抽查市县防指应急值守和工作责任落实情况,进一步压紧压实防汛抗旱的责任链条。各地对基层防汛工作落实不力的情况也进行了追责问责。我举两个例子,去年7月,湖南汉寿县的洲口镇落实上级防汛工作要求不力问题予以通报,有23人被问责。去年8月,安徽省阜南县对防汛抢险救灾工作中落实巡堤查险工作部署不到位问责17人。