责任链模式(Chain of Resposibility)

        避免请求发送者与接受者耦合在一起,让多个对象都有可能接受请求,将这些对象连接成一条连,并且沿着这条链传递请求,直到有对象处理它为止。

传递着接口(Handler ):定义一个处理请求的接口,(可选)实现链中下一个对象。
具体传递着(ConcreteHandler ):处理它所负责的请求,可以访问链中的下一个对象,如果可以处理请求,就处理它,否则将请求转发给后继者。
客户应用程序(Client ):向链中的对象提出最初的请求。
范例:1.军队中剧情的传递就是一个责任链,下属行动需要上级比准,所以要把行动计划包给上级,上级有传给上级,直至有一个人可以决定,一个士兵请求进入反恐行动组,他就会给班长发送请求,班长给排长,排长个连长,这样一级一级的传下去,直到传到军长,因为军长能够据顶谁可以参加反恐行动组。
             2.既定我们要做一个只能大厦按群系统。安全系统包括很多各种传感器(运动检测器、烟感检测器、温度检测器等),它们的状态会传给计算机。计算机系统的工作是记录这些状态并在紧急事件发生时发出警报。我们设计的系统要有高度可扩展性,它可以适用于小型零售店、办公楼、仓库、多功能大厦等多种场合。
优势和缺陷
责任链模式可以减少对象的连接,为对象责任分配增加了很大的灵活性。该模式允许把一组类作为一个类来使用,并且在类的组合中,一个累的时间可以发送到另一个类并有其处理。
责任链模式通常应哟个与图形用户界面中,窗体的部件可能会包含其他几个小部件,就如同windows窗体应用程序中,控件中又可以防止其他控件,控件编辑诶会决定是否处理事件,或者将时间传递给父控件来处理。
另外,责任链还会以树状出现,这样,一个时间可以传给多个类,或者,多个类的信息可以提交到一个类。树状责任链能够提供更灵活的技巧,但缺点是信息在树中容易迷失。
应用情景
1.       超过一个对象能够处理客户请求并且到底哪个对象处理预先不知道。
2.       一个请求可以发布到多个对象但它的接受都是不清晰。
3.       可以动态之地昂一组对象处理请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值