Chain Of Responsibility Design Pattern 责任链模式

Chain Of Responsibility Design Pattern 责任链模式

what(是什么): 将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。

when(什么时候用): 当

why(为什么用):

how(如何用): 用个数组去存储处理对象,然后循环调用对象去处理

个人理解: 其实就是链式任务,A -> B -> C, 任务一定会按ABC三个顺序执行。到某个步骤执行完后就会停止。(但是不是也会有处理部分的职责,还有部分需要后续步骤处理?在生活中常出现step 1,2,3 1成功后才会走2, A部门处理完相应内容需要B部门处理后续任务等等)
但这个的优势就是不用特定的去找谁才是负责人,就按顺序执行,谁可以执行谁执行。

<!-- 责任链 -->
public interface IHandler {
  boolean handle();
}

public class HandlerA implements IHandler {
  @Override
  public boolean handle() {
    boolean handled = false;
    //...
    return handled;
  }
}

public class HandlerB implements IHandler {
  @Override
  public boolean handle() {
    boolean handled = false;
    //...
    return handled;
  }
}

public class HandlerChain {
  private List<IHandler> handlers = new ArrayList<>();

  public void addHandler(IHandler handler) {
    this.handlers.add(handler);
  }

  public void handle() {
    for (IHandler handler : handlers) {
      boolean handled = handler.handle();
      if (handled) {
        break;
      }
    }
  }
}

// 使用举例
public class Application {
  public static void main(String[] args) {
    HandlerChain chain = new HandlerChain();
    chain.addHandler(new HandlerA());
    chain.addHandler(new HandlerB());
    chain.handle();
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值