设计模式总结链接
责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
一。简解
责任链模式顾名思义,解决问题是可以通过某个链条进行解决。听起来不是十分精确,这种模式实现了请求和处理的解耦,只需要把某个请求交给责任链,然后等待处理结果即可,无需关心如何处理。
二。用途
主要用在某一类事物中,对于不同情况(或者说是不同 程度的问题)有不同的处理方法
三。实例
java中的异常处理就是采用这种责任链模式进行的。
编写某个类时,有异常产生,可以直接将异常抛出,也可以自行处理
如果没处理,再调用该方法时就会产生异常,可以处理也可以继续抛出。
….
那么这就是一条责任链,不断抛出,当然在这个链条中总有一个得处理,否则就会出错。
这就是责任链,不需要关心谁处理它总之会被处理,否则就会出错。
有点绕,再来个例子
有一家公司业务公司有以下职位:
老板,什么都能管
总经理,能够批准10W以下的业务
经理,能够批准5W以下的业务
科长,能够批准2W以下的业务
员工,能处理1W以下的业务
客户A来了,找到员工要办50W的业务,员工没这个权利呀,往上递交,最后老板处理此业务。
客户B来了,找到员工办8W的业务,员工依然没权利,往上递交,对吼总经理批了。
客户C来了,找员工要办0.5W的业务,员工有权利,给他办了。
这就是责任链模式的精髓,处理业务的可能不是一个类,但是一定是这个类中的某个类。
四。优点
- 责任链实现了请求和处理的解耦
- 对于请求来说处理是透明的无需关心
- 在对处理进行修改时无需修改请求情况
五。不足
责任链模式牵扯的类还是比较多的,虽然方便扩展,但是多了还是有些杂乱,这是些人链模式的一点小小的不足,但是这种模式还是十分强大的。扩展性比较好,解耦程度还算比较彻底。