责任链模式, Handler 对象的抽象方法 handleProcess(),由多个实现类去实现,这些多个实现类又组合成了 Handler 。
Handler 对象里自带一个属性叫 successor 它的类型同样是 Handler 。执行时先执行自身的 handleProcess () 方法,再执行 Handler 内的的 successor 的execute() 方法,实现了链式调用逐级调用 ,直到最后的 successor 为 null 为止。
chainClient
chainHandler
责任链模式
责任链的调用
/**
* Created by cat on 2017-02-28.
*/
public abstract class Handler {
private Handler sucessor;
public Handler getSucessor() {
return sucessor;
}
public void setSucessor(Handler sucessor) {
this.sucessor = sucessor;
}
public void execute(){
handleProcess();
if(sucessor != null){
sucessor.execute();
}
}
protected abstract void handleProcess();
}
package com.imooc.chain;
/**
* Created by cat on 2017-02-28.
*/
public class Client {
static class HandlerA extends Handler{
@Override
protected void handleProcess() {
System.out.println("handle by a");
}
}
static class HandlerB extends Handler{
@Override
protected void handleProcess() {
System.out.println("handle by b");
}
}
static class HandlerC extends Handler{
@Override
protected void handleProcess() {
System.out.println("handle by c");
}
}
public static void main(String[] args){
Handler handlerA = new HandlerA();
Handler handlerB = new HandlerB();
Handler handlerC = new HandlerC();
handlerA.setSucessor(handlerB);
handlerB.setSucessor(handlerC);
handlerA.execute();
}
}
责任链模式
责任链模式Chain
多个AOP叠加 责任链模式
当多个AOP进行叠加的时候,spring会采用责任链模式来实现
厉害了,不知道jdk11,里边有没有这些方法了
链式调用 细看
责任链模式
多个AOP作用于同一个对象时如何叠加:采用责任链方式
Spring AOP 采用Chain方式来设计责任链
多个AOP如何叠加?
采用责任链模式
AOP的责任链,实现AOP的链式调用
关键在于理解Chain类的proceed方法内采用的递归算法
Spring责任链
责任链模式