0x00 责任链模式
定义
Avoid coupling the sender of a request to its rceiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.(使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。)
重点
其重心和核心都在“链”上,有一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果,多个具体处理者 ConcreteHandler 组成了责任者模式的核心”链”。
优点
将请求和处理分开。请求者只需递交请求到窗口,不关心谁在处理,而处理者只关心自己的处理部分,然后提交下一级处理者,直至结束。灵活解耦。
缺点
- 性能, 每个请求从链头遍历到链尾, 当链较长时,性能会有问题。
- 调试,这个是否只能二分断点排查了。。。。。。
留意
对链的节点数量进行限制,避免超长链的现象发生。可在 setNext()方法中判断
php 实现
1 |
|
0x01 小结
在责任者模式的核心是: 发起的一个请求直接投给第一个处理者, 依次传递给下一层处理者,直至最终返回结构, 整个请求的处理过程被屏蔽起来。