在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来的形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出请求的客户端并不知道链上的那一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态的重新组织链和分配任务。
职责链模式包含如下角色:
抽象处理者(Handler)代码:
public abstract class Handler { protected Handler successor; public void setSuccessor(Handler successor) { this.successor=successor; } public abstract void handleRequest(String request); }
具体处理者(ConcreteHandler)代码:
public class ConcreteHandler extends Handler { public void handleRequest(String request) { if(请求request满足条件) { ...... //处理请求; } else { this.successor.handleRequest(request); //转发请求 } } }
击鼓传花:一群人围在一起,一个人敲鼓,花束依次传递,鼓声一落,停止传递花束。
创建抽象处理者类。
优点:降低耦合度,符合开闭原则。
缺点:由于是一个职责链,每次在处理请求都要从头开始遍历,降低了性能。
原文:https://www.cnblogs.com/cxl66/p/12722812.html