设计模式 责任链模式

先写一个接口


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

}

posted @ 2016-11-11 21:31  yufenghou  阅读(103)  评论(0编辑  收藏  举报