一责任链模式详解
概念
是一个请求有多个对象处理,这些对象是一条链,但是具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止使用场景
(1)有多个对象可以处理同一个请求,具体哪个对象处理该请求运行时再确定
(2)不明确指定接收者的情况下,向多个对象中的一个提交一个请求
(3)可动态指定一组对象处理请求,客户端可以动态创建职责链来处理请求-
UML
代码示例
public abstract class ChainHandler {
private ChainHandler nextHandler;
public int maxDay;
protected ChainHandler(int maxDay){
this.maxDay=maxDay;
}
public void setNextHandler(ChainHandler nextHandler) {
this.nextHandler = nextHandler;
}
protected void handlerRequest(int day){
if(day<=maxDay){
reply(day);
}else {
if(nextHandler!=null){
nextHandler.handlerRequest(day);
}{
Log.e("zjy","没有可以审批的人了");
}
}
}
protected abstract void reply(int day);
}
public class ProjectManager extends ChainHandler {
public ProjectManager(int maxDay) {
super(maxDay);
}
@Override
protected void reply(int day) {
Log.e("zjy", "审批了");
}
}
ProjectManager projectManager=new ProjectManager(100);
projectManager.setNextHandler(new ProjectCEO(200));
projectManager.handlerRequest(20);
二,android中的实际应用
- try-catch
- 有序广播
- 事件分发