责任链模式

发布时间 2023-09-30 14:25:40作者: 叶~星

将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。

abstract class Handler
{
    private Handler next;
    public void setNext(Handler next)
    {
        this.next=next; 
    }
    public Handler getNext()
    { 
        return next; 
    }   
    //处理请求的方法
    public abstract void handleRequest(String request);       
}
 Handler handler1=new ConcreteHandler1(); 
 Handler handler2=new ConcreteHandler2(); 
 handler1.setNext(handler2); 

 如果第一个没有处理,因为责任链已经设计好了

getNext().handleRequest(request);  
  if(request.equals("one")) {
       //   
  }
  else{
      if(getNext()!=null){
            getNext().handleRequest(request);             
       } else{
            System.out.println("没有人处理该请求!");
       }
  } 
当然也可以在else里面设计责任链
System.out.println("金额大于2000,部门经理无权审批,移交给总经理!");
setNext(new Manager());
return getNext().handleRequest(fee);