java 行为模式 责任链模式 动态组装不同的复杂业务流程

意图:

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
 

适用性: 

有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。可处理一个请求的对象集合应被动态指定。 

责任链模式的构成

  •  传递者接口(Handler):定义一个处理请求的接口,实现链中下一个对象(可选)
  •  具体传递者(ConcreteHandler):可以访问链中下一个对象,如果可以处理请求,就处理它,否则将请求转发给后继者
  •  客户端(Client):向链中的对象发出请求

UML

                          

 

              

 

 

责任链模式的要点

  1、将一个业务流程中的多个步骤拆分开来,每个步骤封装到一个handler处理器中去

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
责任链模式是一种行为设计模式,用于解耦发送请求者和处理请求者之间的关系。在责任链模式中,多个对象组成一条链,每个对象都有机会处理请求,如果一个对象不能处理该请求,则将该请求传递给下一个对象。该模式允许请求在链中的不同对象之间传递,直到找到一个能够处理该请求的对象为止。 在Java中实现责任链模式的一种方法是使用一个基类接口定义处理请求的方法,然后每个具体的处理者都实现这个接口。接口中可以定义一个指向下一个处理者的引用,以便处理者可以将请求传递给下一个对象。 下面是一个使用Java实现责任链模式的示例: ```java // 定义一个处理请求的接口 interface Handler { void handleRequest(Request request); } // 具体的处理者类 class ConcreteHandler1 implements Handler { private Handler nextHandler; @Override public void handleRequest(Request request) { // 如果满足处理条件,则处理该请求,否则将请求传递给下一个处理者 if (request.getCondition()) { // 处理请求的代码 } else { nextHandler.handleRequest(request); } } // 设置下一个处理者 public void setNextHandler(Handler nextHandler) { this.nextHandler = nextHandler; } } class ConcreteHandler2 implements Handler { private Handler nextHandler; @Override public void handleRequest(Request request) { // 如果满足处理条件,则处理该请求,否则将请求传递给下一个处理者 if (request.getCondition()) { // 处理请求的代码 } else { nextHandler.handleRequest(request); } } // 设置下一个处理者 public void setNextHandler(Handler nextHandler) { this.nextHandler = nextHandler; } } // 请求类 class Request { private boolean condition; public boolean getCondition() { return condition; } } public class Main { public static void main(String[] args) { // 创建责任链 Handler handler1 = new ConcreteHandler1(); Handler handler2 = new ConcreteHandler2(); handler1.setNextHandler(handler2); // 创建请求 Request request = new Request(); // 处理请求 handler1.handleRequest(request); } } ``` 在上面的示例中,我们定义了一个处理请求的接口`Handler`,并实现了两个具体的处理者类`ConcreteHandler1`和`ConcreteHandler2`。在`handleRequest`方法中,我们首先判断是否满足处理条件,如果满足则处理请求,否则将请求传递给下一个处理者。 在`Main`类中,我们创建了一个责任链,并设置了处理者的顺序。然后创建一个请求对象,并调用`handleRequest`方法开始处理请求。请求会沿着责任链依次传递,直到找到能够处理该请求的处理者为止。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值