SpringPlugin-Core在业务中的应用

前言

一直负责部门的订单模块,从php转到Java也是如此,换了一种语言来实现订单相关功能。那么Spring里有很多已经搭建好基础模块的设计模式来帮助我们解耦实际业务中的逻辑,用起来非常的方便!就比如我们的订单操作模块。生成订单后,有很多操作。比如:取消、支付、关闭…等等。那么用设计模式的思想去处理这些不同的操作,最好用的就是策略模式来解决它们!把不同的操作分配到不同的实现类里去。这不,我发现了一个不错的东西Spring plugin!

Spring Plugin

Spring plugin这个小东西我也是在看一些开源项目才看到的,感觉还不错。就立马拿来用了下,把它带到我们业务场景里去。这不,带大家体验下。

下面用Spring plugin来重构下订单的相关操作实现。这里我们只模拟,支付和关闭的操作。最后再来简单分析下Spring plugin的原理

实战

首先呢、定义一个操作类型的枚举类,来边界下当前我们系统支持的操作类型!

public enum OrderOperatorType {
   
    /**
     * 关闭
     */
    CLOSED,

    /**
     * 支付
     */
    PAY
    ;
}

第二步、定义操作接口,实现Spring pluginPlugin<S>接口,和配置插件

public interface OrderOperatorPlugin extends Plugin<OrderOperatorDTO> {
   

    /**
     * 定义操作动作
     * @param operator
     * @return
     */
    public Optional<?> apply(OrderOperatorDTO operator);
}

//配置插件,插件写好了,我们要让插件生效!
@Configuration
@EnablePluginRegistries({
   OrderOperatorPlugin.class})
public class OrderPluginConfig {
   
}

第三步 、定义具体的实现类(支付操作、关闭操作)

@Component
public class PayOperator implements OrderOperatorPlugin {
   

    @Override
    public Optional<?> apply(OrderOperatorDTO operator) {
   
        //支付操作
        //doPay()
        return Optional.of("支付成功");
    }

    @Override
    public boolean supports(OrderOperatorDTO operatorDTO) {
   
        return operatorDTO.getOperatorType() == OrderOperatorType.PAY;
    }
}



@Component
public class ClosedOperator implements OrderOperatorPlugin {
   

    @Override
    public Optional<?> apply(OrderOperatorDTO operator) {
   
        //关闭操作
        //doClosed()
        return Optional.of(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值