职责链模式:多个处理器依次处理同一个请求,一个请求先经过A处理器处理,然后把请求转给B处理器,B处理器处理完后再传递给C处理器。以此类推,形成一个链条。链条上的每个处理器各自承担各自的处理职责,所以叫做职责链模式。
public interface IHandler {
boolean handle();
}
public class HandlerA implements IHandler {
@Override
public boolean handle() {
boolean handled = false;
//...
return handled;
}
}
public class HandlerB implements IHandler {
@Override
public boolean handle() {
boolean handled = false;
// ...
return handled;
}
}
public class HandlerChain {
private List<IHandler> handlers = new ArrayList<>();
public void addHandler(IHandler handler) {
this.handlers.add(handler);
}
public void handle() {
for(IHnaler handler : handlers) {
boolean handled = handler.handle();;
if(handled) {
break;
}
}
}
}
public class Application {
public static void main(String[] args) {
HandlerChain chain = new HandlerChain();
chain.addHandler(new HandlerA());
chain.addHandler(new HandlerB());
chain.handle();
}
}
应用设计模式是为了应对代码的复杂性。职责链模式也不例外,使用职责链模式,使得代码结构更加清晰,也更容易扩展。很多框架都用了职责链模式,比如netty。