#设计模式# 责任链模式

43 阅读1分钟

责任链模式本质就是链表结构

通过设置下一个处理者,完成对目标对象的流程化处理。

直接上代码示例:

/** 抽象处理者 **/
abstract class Handler{
    
    private Handler nextHandler;
    
    public void setNextHandler(Handler next){
        this.nextHandler = next;
    }
    
    public void nextProcess(String type){
        if(nextHandler != null){
            nextHandler.process(type);
        }
    }
    
   public abstract  void process(String type);
}
/**具体处理类 HandlerA **/
class HandlerA extends Handler{
    
    @Override
    public void process(String type){
        if("A".equals(type)){
            System.out.println("dealing type A");
        } else {
            nextProcess(type);
        }
    }
}

/**具体处理类 HandlerB **/
class HandlerB extends Handler{
    @Override
    public void process(String type){
        if("B".equals(type)){
            System.out.println("dealing type B");
        } else {
            nextProcess(type);
        }
    }
}

/**具体处理类 HandlerC **/
class HandlerC extends Handler{
    @Override
    public void process(String type){
        if("C".equals(type)){
            System.out.println("dealing type C");
        } else {
            nextProcess(type);
        }
    }
}

public class Main{
    public static void main(String[] args){
        Handler a = new HandlerA();
        Handler b = new HandlerB();
        Handler c = new HandlerC();
        
        // 构建责任链 a->b->c
       
        a.setNextHandler(b);
        b.setNextHandler(c);
        
        a.process("C");
        a.process("B");
        a.process("A");
        
    }
}

Java 中使用责任链模式的有:

  1. Logger#log() 日志处理机制;
  2. 过滤链 Filter#doFilter()