• 设计模式 责任链模式


    先写一个接口

    
    public abstract class Handler {
    
    	protected Handler successor;
    	public void SetSuccessor(Handler successor)
    	{
    		this.successor=successor;
    	}
    	 abstract void HandleRequest(int request);
    }
    
    

    再写三个具体的处理器

    
    public class ConcreteHandler1 extends Handler{
    
    	@Override
    	void HandleRequest(int request) {
    		// TODO Auto-generated method stub
    		if(request>=0&&request<10)
    		{
    			System.out.println(this.getClass()+
    					"处理请求"+request);
    		}
    		else if(successor!=null)
    		{
    			successor.HandleRequest(request);
    		}
    	}
    
    }
    
    
    
    public class ConcreteHandler2 extends Handler{
    
    	@Override
    	void HandleRequest(int request) {
    		// TODO Auto-generated method stub
    		if(request>=10&&request<20)
    		{
    			System.out.println(this.getClass()+
    					"处理请求"+request);
    		}
    		else if(successor!=null)
    		{
    			successor.HandleRequest(request);
    		}
    	}
    
    	
    }
    
    
    
    
    public class ConcreteHandler3 extends Handler{
    
    	@Override
    	void HandleRequest(int request) {
    		// TODO Auto-generated method stub
    		if(request>=20&&request<30)
    		{
    			System.out.println(this.getClass()+
    					"处理请求"+request);
    		}
    		else if(successor!=null)
    		{
    			successor.HandleRequest(request);
    		}
    	}
    
    	
    }
    
    

    再写测试类

    
    public class Program {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Handler handler1=new ConcreteHandler1();
    		Handler handler2=new ConcreteHandler2();
    		Handler handler3=new ConcreteHandler3();
    		handler1.SetSuccessor(handler2);
    		handler2.SetSuccessor(handler3);
    		
    		int[] requests ={2,5,14,22,18,3,27,20};
    		
    		for (int request : requests) {
    			handler1.HandleRequest(request);
    		}
    	}
    
    }
    
    
  • 相关阅读:
    (DP)codeforces
    (树状数组)POJ
    (树状数组)POJ
    (二维树状数组)POJ
    (模拟)HDU
    (暴力+深搜)POJ
    (判连通+暴力)UVA
    (深搜)UVA
    (暴力+各种算法)hihoCoder
    (尺取法)HDU
  • 原文地址:https://www.cnblogs.com/yufenghou/p/6055693.html
Copyright © 2020-2023  润新知