首页 > 其他分享 >ChainofResponsibility Pattern

ChainofResponsibility Pattern

时间:2023-03-03 17:23:52浏览次数:37  
标签:ChainofResponsibility Pattern AbstractAction Action2 doAction void nextAction pu

责任链模式:

参考: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)));
//这里直接使用构造器建立责任链;此外还可以通过set方法建立责任链
a2.dothings();
在这种模式中,通常每个接收者(这里的Action)都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求参数传给下一个接收者,依此类推。注意上面的示例并未体现请求参数

标签:ChainofResponsibility,Pattern,AbstractAction,Action2,doAction,void,nextAction,pu
From: https://www.cnblogs.com/java-source-learn/p/17176346.html

相关文章