码迷,mamicode.com
首页 > 其他好文 > 详细

小菜学设计模式——职责链模式

时间:2015-06-24 11:12:16      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:


背景

    时间过得真快,转眼又是半年,可是作为一名将要资深的码农,是不是应该加薪了呢?可是说到加薪,经理又要推诿,这个不是我能决定的,你去找总监吧,总监又会说,在等等吧,等这个项目上线不会亏待你的。我的个神呀,这个产品上线估计要到明年春天吧!好吧,关于职责问题,这里就是一个著名的设计模式,职责链模式。


1、使用意图

    把用户的请求,层层传递处理,直到这个请求被处理为止。


2、生活实例

    工作加薪、请假。    


3、Java 例子(框架、JDK 、JEE)

    暂时没有发现,如果有发现的同学可以提出修改。


4、模式类图

技术分享

抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法以设定和返回对下家的引用。这个角色通常是一个Java抽象类。上图中Handler类的聚合关系给出了具体子类对下家的引用,抽象方法handleRequest()规范了子类处理请求的操作。

具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。


5、模式优点

    职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。

    当客户提交一个请求时,请求是沿链接传递直到有一个ConcreteHandler对象负责处理它。

    接收者和发送者都没有对方明确信息,且链中的对象自己也并不知道链的结构。结果只是职责链可简化对象的相互连接,他们仅需要保持一个指向其后继者的引用,而不需要保持它所有的候选接受者的引用。

    随时的增加或修改处理一个请求的结构。增强了给对象指派职责的灵活性。


6、与类似模式比较

    一个请求极有可能到了链的末端都得不到处理,或者因为没有正确配置而得不到处理,所以对于使用这个设计模式一定要对逻辑清晰。

    这个设计模式感觉和状态模式有点相似,状态模式则是定义了不同状态的接口,然而,职责链模式则不会把内部处理的逻辑暴露给客户端,而是对客户端透明处理,我想这应该也就是二者的一个重大区别吧。二者共同点就是对象处理的传递,层层传递,直到处理为止。


小菜学设计模式——职责链模式

标签:

原文地址:http://my.oschina.net/heweipo/blog/470019

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!