先写一个接口
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);
}
}
}