深化浅出基于Java的责任链情势[Java编程]
本文“深化浅出基于Java的责任链情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、引言
初看责任链情势,心里不由想起了一个从前听过的相声:看牙.说的是一个病人看牙的时刻,医生不当心把拔下的一个牙掉进了病人嗓子里.病人因此楼上楼下的跑了好多科室,最后无果而终.
责任链情势就是这种“推卸”责任的情势,你的问题在我这里能办理我就办理,不行就把你推给另一个对象.至于到底谁办理了这个问题了呢?我管呢!
2、定义与构造
从名字上大约也能猜出这个情势的大约边幅——系统中将会存在多个有近似处理本领的对象.当一个恳求触发后,恳求将在这些对象构成的链条中传送,直到找到最符合的“责任”对象,并举行处理.
《计划情势》中给它的定义以下:使多个对象都有机会处理恳求,从而避免恳求的发送者和接纳者之间的耦合关系.将这些对象连成一条链,并沿着这条链传送该恳求,直到有一个对象处理它为止.
从定义上可以看出,责任链情势的提出是为了“解耦”,以应变系统需求的变更和不明确性.
下面是《计划情势》中给出的实用范围:
1) 有多个的对象可以处理一个恳求,哪个对象处理该恳求运行时刻自动肯定.
2) 你想在不明确指定接纳者的情形下,向多个对象中的一个提交一个恳求.
3) 可处理一个恳求的对象调集应被动态指定.
责任链情势真的能给发送者和接纳者之间解耦(这仿佛很奇异)吗?先来看下它的构成角色.这个问题我会在下面说起.
责任链情势由两个角色构成:
1) 抽象处理者角色(Handler):它定义了一个处理恳求的接口.当然关于链子的差别实现,也可以在这个角色中实现后继链.
2) 具体处理者角色(Concrete Handler):实现抽象角色中定义的接口,并处理它所负责的恳求.假如不能处理则拜候它的后继者.
至于类图不放也罢.毕竟就是一个担当大概实现.
3、纯与不纯
责任链情势的纯与不纯的辨别,就像黑猫、白猫的辨别一样.不要决心的去使自己的代码来符合一个情势的公式.只要可以使代码降低耦合、提高重用,满意系统需求并能很好的适应改变就行了.正所谓:管它黑猫白猫,抓住老鼠就是好猫!
纯的责任链情势,规定一个具体处理者角色只能对恳求作出两种行动:自己处理;传给下家.不能呈现处理了一部份,把剩下的传给了下家的情形.并且恳求在责任链中必须被处理,而不能呈现无果而终的终局.
反之,则就是不纯的责任链情势.
不纯的责任链情势还算是责任链情势吗?比方一个恳求被捕捉后,每个具体处理者都尝试去处理它,不管后果若何都将恳求再次转发.我认为这种方法的实现,算不算是责任链情势的一种倒不重要,重要的是我们也能从中体味到责任链情势的思惟:通过将多个处理者之间成立接洽,来到达恳求与具体的某个处理者的解耦.
下面的例子就是采取了上面提到的“不纯的责任链情势”.
以上是“深化浅出基于Java的责任链情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |