书中这样描述责任链模式:将多个对象组成一条职责链,然后按照它们在职责链上的顺序一个一个地招出到底应该谁来负责处理。
不要被这个名字迷惑,其实就是类似一个循环顺序处理一件事而已,不过在这里把需要处理的事情和处理的流程解耦,让问题不用清楚具体有哪些处理流程。
责任链模式的优点:
- 降低耦合度。它将请求的发送者和接收者解耦
- 简化了对象,使得对象不需要知道链的结构
- 增强给对象指派职责的灵活性,允许动态地新增或者删除责任链
- 增加新的请求处理类方便
当然也有缺点:
- 不能保证请求一定被接收
- 系统性能将受到一定影响,调试时不方便,可能会造成循环调用
我仔细想了想实践中责任链模式的使用,发现使用的很少。或许那种循环去解决问题,发现解决了就退出应该和这个模式类似,但是我们基本都没有把发送者和接受者解耦,或许以后看到类似的地方可以尝试下这种设计模式。
网友评论