设计模式-责任链

一责任链模式详解

  • 概念
    是一个请求有多个对象处理,这些对象是一条链,但是具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止

  • 使用场景
    (1)有多个对象可以处理同一个请求,具体哪个对象处理该请求运行时再确定
    (2)不明确指定接收者的情况下,向多个对象中的一个提交一个请求
    (3)可动态指定一组对象处理请求,客户端可以动态创建职责链来处理请求

  • UML

    image.png

  • 代码示例

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
  • 有序广播
  • 事件分发

你可能感兴趣的:(设计模式-责任链)