当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

深化浅出基于Java的责任链情势[Java编程]

赞助商链接



  本文“深化浅出基于Java的责任链情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1、引言

初看责任链情势,心里不由想起了一个从前听过的相声:看牙.说的是一个病人看牙的时刻,医生不当心把拔下的一个牙掉进了病人嗓子里.病人因此楼上楼下的跑了好多科室,最后无果而终.

责任链情势就是这种“推卸”责任的情势,你的问题在我这里能办理我就办理,不行就把你推给另一个对象.至于到底谁办理了这个问题了呢?我管呢!

2、定义与构造

从名字上大约也能猜出这个情势的大约边幅——系统中将会存在多个有近似处理本领的对象.当一个恳求触发后,恳求将在这些对象构成的链条中传送,直到找到最符合的“责任”对象,并举行处理.

《计划情势》中给它的定义以下:使多个对象都有机会处理恳求,从而避免恳求的发送者和接纳者之间的耦合关系.将这些对象连成一条链,并沿着这条链传送该恳求,直到有一个对象处理它为止.

从定义上可以看出,责任链情势的提出是为了“解耦”,以应变系统需求的变更和不明确性.

下面是《计划情势》中给出的实用范围:

1) 有多个的对象可以处理一个恳求,哪个对象处理该恳求运行时刻自动肯定.

2) 你想在不明确指定接纳者的情形下,向多个对象中的一个提交一个恳求.

3) 可处理一个恳求的对象调集应被动态指定.

责任链情势真的能给发送者和接纳者之间解耦(这仿佛很奇异)吗?先来看下它的构成角色.这个问题我会在下面说起.

责任链情势由两个角色构成:

1) 抽象处理者角色(Handler):它定义了一个处理恳求的接口.当然关于链子的差别实现,也可以在这个角色中实现后继链.

2) 具体处理者角色(Concrete Handler):实现抽象角色中定义的接口,并处理它所负责的恳求.假如不能处理则拜候它的后继者.

至于类图不放也罢.毕竟就是一个担当大概实现.

3、纯与不纯

责任链情势的纯与不纯的辨别,就像黑猫、白猫的辨别一样.不要决心的去使自己的代码来符合一个情势的公式.只要可以使代码降低耦合、提高重用,满意系统需求并能很好的适应改变就行了.正所谓:管它黑猫白猫,抓住老鼠就是好猫!

纯的责任链情势,规定一个具体处理者角色只能对恳求作出两种行动:自己处理;传给下家.不能呈现处理了一部份,把剩下的传给了下家的情形.并且恳求在责任链中必须被处理,而不能呈现无果而终的终局.

反之,则就是不纯的责任链情势.

不纯的责任链情势还算是责任链情势吗?比方一个恳求被捕捉后,每个具体处理者都尝试去处理它,不管后果若何都将恳求再次转发.我认为这种方法的实现,算不算是责任链情势的一种倒不重要,重要的是我们也能从中体味到责任链情势的思惟:通过将多个处理者之间成立接洽,来到达恳求与具体的某个处理者的解耦.

下面的例子就是采取了上面提到的“不纯的责任链情势”.


  以上是“深化浅出基于Java的责任链情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 深化浅出Netfilter/iptables防火墙框架(底子篇)
  • 数据库计划范式深化浅出
  • 深化浅出基于Java的责任链情势
  • 深化浅出基于Java的制作筹划情势
  • 深化浅出谈垃圾的回收—Java堆的管理
  • <b>深化浅出Java筹划情势之迭代器情势</b>
  • 深化浅出基于Java的代理筹划情势
  • 深化浅出Java多线程(1)-办法join
  • 深化浅出Java多线程(2)-Swing中的EDT(事件分发线程)
  • 深化浅出基于Java的注释器筹划情势
  • 深化浅出Java堆的管理 - 垃圾回收
  • 深化浅出Java的访谒者情势
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .