一:责任链模式
责任链模式解决什么样的问题?
核心思想就是分而治之。当调用者面临的被调者太多时,为了降低逻辑复杂度,把相关的被调用者组织起来,形成一个链式的结构,被调用者之间进行调用传递(责任传递)。
责任链的实现原理
每个 被调用者 都持有下一个 被调用者 的引用,客户端只需要发起一次调用即可。
应用场景
tomcat的过滤器链/struts2的21种拦截器等等,在第三方成熟的框架大多都有涉及
具体演示
对被调用者抽象出来一个接口,方便调用时隐藏具体实现,利于解耦
`
public interface ProducerHandler {
void handleRequest();
void setNext(ProducerHandler next);
}
创建几个被调用者的实现
CarTyreProducerHandler,CarWindowProducerHandler
其中一个是这样的:
public class CarTyreProducerHandler implements ProducerHandler{
private ProducerHandler nextProducer;
@Override
public void handleRequest(){
doHandler();
if(nextProducer != null){
nextProducer.handleRequest();
}else{
System.out.println("所有的生产者都已完成生产");
}
}
@Override
public void setNext(ProducerHandler next){
this.nextProducer = next;
}
}
组装链式关系并调用
CarTyreProducerHandler tyreProducerHandler = new CarTyreProducerHandler();
CarWindowProducerHandler carWindowProducerHandler = new CarWindowProducerHandler();
tyreProducerHandler.setNext(carWindowProducerHandler);
tyreProducerHandler.handleRequest();
参考责任链模式