chain of responsibility将要处理的对象在一个链式结构中传递处理。javaEE中的Filter就是一种chain of responsibility,每一个Filter进行相应的处理。Netty中的ChannelPipeline也是一种ChainOfResponsibility。每一个ChannelHandler对相应的message进行处理,可以选择处理向后传递也可以不传递。
模拟一种实现如下
public class Collector extends RequestHandler { public Collector(RequestHandler next) { super(next); } @Override public void handleRequest(Request request) { if (request.getRequestType() == RequestType.COLLECT) { System.out.println(request); } else { super.handleRequest(request); } } }