设计模式 责任链模式

先写一个接口


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);
		}
	}

}

原文地址:https://www.cnblogs.com/yufenghou/p/6055693.html