职责链模式demo实例

职责链模式demo实例

  • 定义接口BaseChain

    • public interface BaseChain {
          public abstract void execute();
          public abstract void setNextChain(BaseChain nextChain);
      }
      
  • 定义抽象类AbstractChain, 给出执行下一条链的默认实现

    • public abstract class AbstractChain implements BaseChain {
      
          private String chainName;
          private BaseChain nextChain;
      
          public AbstractChain(BaseChain nextChain) {
              this.nextChain = nextChain;
          }
          public AbstractChain(){};
      
          public AbstractChain(String chainName) {
              this.chainName = chainName;
          }
      
          public AbstractChain(String chainName,BaseChain nextChain) {
              this.chainName = chainName;
              this.nextChain = nextChain;
          }
      
          public BaseChain getNextChain() {
              return nextChain;
          }
      
          public void setNextChain(BaseChain nextChain) {
              this.nextChain = nextChain;
          }
      
          public String getChainName() {
              return chainName;
          }
      
          public void setChainName(String chainName) {
              this.chainName = chainName;
          }
      
          public void executeNext(){
              if(nextChain != null){
                  nextChain.execute();
              }
          }
      
      
      }
      
      
  • 具体的链条节点, 这里给出两个节点, 扩展节点只需要继承AbstractChain

    • public class ConcreteChainA extends AbstractChain {
          private final static String defaultChainName = "链条A";
          public ConcreteChainA(){
              super.setChainName(defaultChainName);
          }
          public ConcreteChainA(String chainName){
              super.setChainName(chainName);
          }
      
          public ConcreteChainA(BaseChain nextChain){
              super(nextChain);
          }
      
          public ConcreteChainA(String chainName,BaseChain nextChain){
              super(chainName,nextChain);
          }
          @Override
          public void execute() {
             // doSomething
              System.out.println(this.getChainName() + " execute");
              executeNext();
          }
      
      
      }
      
    • public class ConcreteChainB extends AbstractChain {
          private final static String defaultChainName = "链条B";
          public ConcreteChainB(){
              super.setChainName(defaultChainName);
          }
          public ConcreteChainB(String chainName){
              super.setChainName(chainName);
          }
      
          public ConcreteChainB(BaseChain nextChain){
              super(nextChain);
          }
      
          public ConcreteChainB(String chainName, BaseChain nextChain){
              super(chainName,nextChain);
          }
          @Override
          public void execute() {
             // doSomething
              System.out.println(this.getChainName() + " execute");
              executeNext();
          }
      
      
      }
      
  • 测试实例

    • public class ChainPatternTest {
          public static void main(String[] args) {
              // 创建职责链
      
              BaseChain concreteChainA = new ConcreteChainA("链条一");
              BaseChain concreteChainB = new ConcreteChainB("链条二");
              concreteChainA.setNextChain(concreteChainB);
      
              // 执行链条
              concreteChainA.execute();
              // 结果
      //        链条一 execute
      //        链条二 execute
      
              concreteChainB.execute();
              // 结果
              // 链条二 execute
          }
      }
      

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinBin_Bang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值