定义:
将多个对象连成一条链,沿着这条链传递请求,直到有一个对象处理它为止,使得多个对象都有机会处理该请求。
两个角色:
抽象处理者:定义处理请求的接口
具体处理者:具体处理模块,有两种策略,一种是直接处理请求,若当前请求无法被处理那么则请求上一级的处理者继续处理请求。
// 抽象处理者类,用来定义处理接口
public abstract class AbstractHandler
{
private AbstractHandler handler;
public abstract void handle(String str);
public void setHandler(AbstractHandler handler){
this.handler = handler;
}
public AbstractHandler getHandler() {
return handler;
}
}
-------------------------------------------------------------------------------------
// 三个具体处理者,用来处理各自相应的请求,处理不了则请求上一级进行处理
public class HandlerA extends AbstractHandler
{
@Override
public void handle(String str)
{
if("A".equals(str)){
System.out.println("HandlerA 开始处理");
}else{
super.getHandler().handle(str);
}
}
}
public class HandlerB extends AbstractHandler
{
@Override
public void handle(String str)
{
if("B".equals(str)){
System.out.println("HandlerB 开始处理");
}else{
super.getHandler().handle(str);
}
}
}
public class HandlerC extends AbstractHandler
{
@Override
public void handle(String str)
{
System.out.println("HandlerC 开始处理");
}
}
// 客户端
public class Client
{
public static void main(String[] args)
{
AbstractHandler handlerA,handlerB,handlerC;
handlerA = new HandlerA();
handlerB = new HandlerB();
handlerC = new HandlerC();
handlerA.setHandler(handlerB);
handlerB.setHandler(handlerC);
handlerA.handle("A");
handlerA.handle("B");
handlerA.handle("C");
}
}
Output:
HandlerA 开始处理
HandlerB 开始处理
HandlerC 开始处理
网友评论