java责任链模式工作流_java设计模式----责任链模式

责任链模式是对象的行为模式。使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系。将这些对象连成一条链,沿着这条链传递该请求,直到有一个对象处理它为止。责任链模式强调的是每一个对象及其对下家的引用来组成一条链,利用这种方式将发送者和接收者解耦。

责任链模式还是很好理解的,责任链模式的应用场景也很多,比如说OA系统的工作流,Struts2的拦截器(Interceptor),servlet的过滤器(Filter)

责任链主要两个角色,一个是抽象处理者角色,一个是具体处理者角色。抽象处理者定义请求方法及连接下家的对象引用。具体处理者则是判断当前请求是否符合自己处理要求,不能处理则交给下家。

这样的话,我们在测试的时候,利用抽象处理者中对象的set方法将具体对象链接起来。然后传入合适参数即可。上代码:

抽象处理对象,定义一个具体对象,设置getset方法,定义接收请求方法:

package chain;

public abstract class Handler {

private Handler seccessor;

public abstract void handlerQequest(String condition);

public Handler getSeccessor() {

return seccessor;

}

public void setSeccessor(Handler seccessor) {

this.seccessor = seccessor;

}

}

具体处理对象一:

package chain;

public class ConcreteHandler1 extends Handler{

@Override

public void handlerQequest(String condition) {

if(condition.equals("ConcreteHandler1")){

System.out.println("处理器1处理....");

}else{

System.out.println("处理器1不处理...");

//交给下一个处理器处理

getSeccessor().handlerQequest(condition);

}

}

}

具体处理对象二:

package chain;

public class ConcreteHandler2 extends Handler{

@Override

public void handlerQequest(String condition) {

if(condition.equals("ConcreteHandler2")){

System.out.println("处理器2处理...");

}else{

System.out.println("处理器2不处理...");

getSeccessor().handlerQequest(condition);

}

}

}

具体处理对象N:

package chain;

public class ConcreteHandlerN extends Handler{

@Override

public void handlerQequest(String condition) {

System.out.println("处理器N处理...");

}

}

测试:(将所有处理对象链接起来)

package chain;

public class Test {

public static void main(String[] args) {

Handler handler1 =new ConcreteHandler1();

Handler handler2=new ConcreteHandler2();

Handler handlerN=new ConcreteHandlerN();

//链起来

handler1.setSeccessor(handler2);

handler2.setSeccessor(handlerN);

//假设这个请求不是1、2的责任

handler1.handlerQequest("执行到最后");

}

}

结果:

处理器1不处理...

处理器2不处理...

处理器N处理...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值