职责链模式

职责链模式:多个处理器依次处理同一个请求,一个请求先经过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。

上一篇:The Class File Viewer cannot handle the given input


下一篇:设计模式,门面模式,c++实现,委托,c++实现委托