责任链模式浅析

其实责任链模式的话再现实的生活中也有很多的例子,就比如说你去找别人帮忙,你去找他,他可能帮不了你,就去找别人,其实大致就是类似于这样的过程。

还有就是其实责任链模式还有个情况也可以是这个事情,我去处理了,但没有直接返回,还是想下个人接着处理,这样一直传递下去,也是可以的。

责任链模式的话其实就是使多个对象都有机会去处理请求,这样可以避免请求的发送者和接受者之间的发生耦合,这个模式是将这些对象去连成一条链,并且沿着这条链去传递请求,直到有一个对象可以去处理这个请求。这样的好处就在于发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这这样我们就可以在不影响客户端的情况下去重新组织和分配责任。


责任链模式的主要的思想其实就是一个对象引用了同一类型的另一个对象,形成了一条链,链中的每个对象都实现了相同的方法,去处理对链中第一个对象发起的同一个请求。如果一个对象不知道怎么去处理的话,就把请求传给下一个响应器。


责任链模式中涉及到的角色有

抽象的处理者(Hander):定义出一个处理请求的接口,就比如说可以去定义一个方法handleRequest()去规范了子类处理请求的操作。

具体处理者(ConcreteHandler):这个就是在具体的处理者如果收到了请求之后去做相应的处理,如果无法处理就传递给下一个对象,具体的处理者中有对下一个处理者的引用。


结构图

责任链模式浅析

什么时候去用设计模式的话

1、有多个对象可以去处理请求,如果处理程序只有在运行的时候才能确定的

2、想向一组对象发出请求的话,不能显示的去指定处理请求的特定的处理程序。

责任链模式可以参考:http://blog.****.net/hguisu/article/details/7547231

http://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html

http://blog.****.net/jason0539/article/details/45091639