使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。
//抽象处理者
public abstract class Handler{
protected Handler successor;//下一节点的处理者
/**
* 请求处理
* @param condition 请求条件
*/
public abstract void handleRequest(String condition);
}
public class ConcreteHander1 extends Handler{
@Override
public void handleRequest(String condition){
if(condition.equals("ConcreteHandler1")){
System.out.println("ConcreteHandler1 handled");
}else{
successor.handleRequest(condition);
}
}
}
public class ConcreteHander2 extends Handler{
@Override
public void handleRequest(String condition){
if(condition.equals("ConcreteHandler2")){
System.out.println("ConcreteHandler2 handled");
}else{
successor.handleRequest(condition);
}
}
}
public class Client{
public static void main(String[] args){
//构造一个ConcreteHandler1对象
ConcreteHandler1 handler1=new ConcreteHandler1();
//构造一个ConcreteHandler2对象
ConcreteHandler1 handler2=new ConcreteHandler2();
//设置Handler1的下一个节点
handler1.successor=handler2;
//设置Handler2的下一个节点
handler2.successor=handler1;
//处理请求
handler1.handleRequest("ConcreteHandler2");
}
}