abstract class Handler { protected Handler successor; public void setSuccessor(Handler successor) { this.successor = successor; } abstract public void handleRequest(int request); }
public class ConcreteHandler1 extends Handler{ public void handleRequest(int request) { if (request >= 0) { System.out.println("ConcreteHnadler1 handle request " + request); } if (successor!=null) { successor.handleRequest(request); } } }
public class ConcreteHandler2 extends Handler { public void handleRequest(int request) { if (request < 100) { System.out.println("ConcreteHnadler2 handle request " + request); } if (successor!=null) { successor.handleRequest(request); } } }
public class ConcreteHandler3 extends Handler { public void handleRequest(int request) { if (request % 2 == 0) { System.out.println("ConcreteHnadler3 handle request " + request); } if (successor!=null) { successor.handleRequest(request); } } }
public class Client { public static void main(String[] args) { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.setSuccessor(h2); h2.setSuccessor(h3); h1.handleRequest(2); h1.handleRequest(3); h1.handleRequest(105); } }
C:\JavaHello\Chain of Responsibility>java Client ConcreteHnadler1 handle request 2 ConcreteHnadler2 handle request 2 ConcreteHnadler3 handle request 2 ConcreteHnadler1 handle request 105 ConcreteHnadler1 handle request 3 ConcreteHnadler2 handle request 3 C:\JavaHello\Chain of Responsibility>