(图来自wiki)
public class Request { private int num; public Request(int num){ this.num=num; } public int getNum() { return num; } } public interface Chain { void setNext(Chain nextChain); void doSomething(Request request); } public class ChainA implements Chain{ private Chain nextChain; @Override public void setNext(Chain nextChain) { this.nextChain = nextChain; } @Override public void doSomething(Request request) { if(request.getNum()>0){ System.out.println("ChainA works!"); } if(nextChain!=null){ nextChain.doSomething(request); } } } public class ChainB implements Chain{ private Chain nextChain; @Override public void setNext(Chain nextChain) { this.nextChain = nextChain; } @Override public void doSomething(Request request) { if(request.getNum()==0){ System.out.println("ChainB works!"); } if(nextChain!=null){ nextChain.doSomething(request); } } } public class ChainC implements Chain{ private Chain nextChain; @Override public void setNext(Chain nextChain) { this.nextChain = nextChain; } @Override public void doSomething(Request request) { if(request.getNum()<0){ System.out.println("ChainC works!"); } if(nextChain!=null){ nextChain.doSomething(request); } } } //测试 public class Client { public static void main(String[] args){ Chain chainA = new ChainA(); Chain chainB = new ChainB(); Chain chainC = new ChainC(); chainA.setNext(chainB); chainB.setNext(chainC); System.out.println("****************"); chainA.doSomething(new Request(1)); System.out.println("****************"); chainA.doSomething(new Request(0)); System.out.println("****************"); chainA.doSomething(new Request(-1)); } }
原文:https://www.cnblogs.com/camcay/p/12377129.html