职责链模式
//职责链模式
//CopyRight(C) CAnca software Office.2006
//Created by CAnca.
public class ResponsibilityMode{
public static void main(String[] args){
Handler handle1 = new ConcreteHandler1();
Handler handle2 = new ConcreteHandler2();
Handler handle3 = new ConcreteHandler3();
handle1.setSuccessor(handle2);
handle2.setSuccessor(handle3);
int[] num = new int[]{23,1,34,0,15,78,20,-1,88,25,30,28};
for(int i = 0 ; i < num.length ; i++){
handle1.HandleRequest(num[i]);
}
}
}
//Handler
abstract class Handler{
protected Handler successor;
public void setSuccessor(Handler successor){
this.successor = successor;
}
abstract void HandleRequest(int request);
}
class ConcreteHandler1 extends Handler{
public void HandleRequest(int request){
if(request >= 0 && request <= 10){
System.out.println(this.getClass().getName() + " handled request " + request);
}else if(this.successor != null){
successor.HandleRequest(request);
}
}
}
class ConcreteHandler2 extends Handler{
public void HandleRequest(int request){
if(request >= 11 && request <= 20){
System.out.println(this.getClass().getName() + " handled request " + request);
}else if(this.successor != null){
successor.HandleRequest(request);
}
}
}
class ConcreteHandler3 extends Handler{
public void HandleRequest(int request){
if(request >= 21 && request <= 30){
System.out.println(this.getClass().getName() + " handled request " + request);
}else if(this.successor != null){
successor.HandleRequest(request);
}
}
}