项目升级使用模式-责任链模式

在责任链模式中,每个处理者对象都包含对下一个处理者的引用,形成一条链。

请求沿着链传递,直到有一个处理者能够处理为止

主要参与者有:

1、Handler处理者:定义一个请求接口。通常包含一个处理方法。如果可以处理请求则处理,否则,将请求传递给下一个处理者

2、ConcreteHandler 具体处理者:实现处理者接口,具体处理请求的对象。如果能处理则处理,不能则传递给下一个处理者

3、Clint客户端:创建处理者链。并向链的起始点提交请求。

Handler

/**
 *升级的父接口
 */
public interface Upgrade{
   // 升级
   void doUpgrade();
   // 当前升级的后一个处理者。@return后面一个升级的处理类,当前类是最后一个就返回null
   Class<? extends Upgrade> nextUpgrade();

}

ConcreteHandler 实现处理者接口

@Service
public class UpgardeVersion implements Upgrade{

    @Override
    public void doUpgrade(){

     // doSomething 升级操作
    }

   
    @Override
    public Class<? extends Upgrade> nextUpgrade(){

     return  Next.class;

   }

}

Clint客户端调用

public class Clint{
    public static void main(String[] args){

       // 组装升级路径
       List<Upgrade> upgradeChain = new ArrayList<>();
       Upgrade current = ApplicationContextUtil.getBean(//版本号);
       if(current == null){return}
       upgradeChain(current, upgradeChain);
       for (Upgrade upgrade : upgradeChain) {
                upgrade.doUpgrade();
            }
     }

     // 递归组装升级路径
     public void upgradeChain(Upgrade current, List<Upgrade> upgradeChain) {
        Class<? extends Upgrade> nextUpgradeClass = current.nextUpgrade();
        if (nextUpgradeClass != null) {
            Upgrade nextUpgrade = ApplicationContextUtil.getBean(nextUpgradeClass);
            upgradeChain.add(nextUpgrade);
            upgradeChain(nextUpgrade, upgradeChain);
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值