责任链模式:
参考:https://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html
避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
多个动作(Action)相连构成责任链:
public abstract class AbstractAction {
private AbstractAction nextAction;//下一个Action
public AbstractAction(AbstractAction nextAction){
this.nextAction=nextAction;
}
public abstract void doAction();//每个子类重写具体的逻辑操作
public void dothings(){
doAction();//调用完当前层逻辑操作后,尝试调用下一层
if(nextAction!=null){
nextAction.dothings();
}
}
}
具体的Action子类:
public class Action1 extends AbstractAction {
public Action1(AbstractAction nextAction){
super(nextAction);
}
@Override
public void doAction() {
System.out.println("Action1.doAction()");
}
}
public class Action2 extends AbstractAction {
public Action2(AbstractAction nextAction){
super(nextAction);
}
@Override
public void doAction() {
System.out.println("Action2.doAction()");
}
}
使用:
Action2 a2=new Action2((new Action1(null)));标签:ChainofResponsibility,Pattern,AbstractAction,Action2,doAction,void,nextAction,pu From: https://www.cnblogs.com/java-source-learn/p/17176346.html
//这里直接使用构造器建立责任链;此外还可以通过set方法建立责任链
a2.dothings();
在这种模式中,通常每个接收者(这里的Action)都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求参数传给下一个接收者,依此类推。注意上面的示例并未体现请求参数