您的位置:首页 > 其它

设计模式 责任链模式

2016-11-11 21:31 295 查看
先写一个接口

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: