Spring Plugin与策略模式:打造动态可扩展的应用

目录

一、策略模式

二、Spring Plugin

        2.1 Spring Plugin 实现策略模式开发

        2.2 策略模式优缺点

三、Spring Plugin 原理


一、策略模式

        策略模式是一种设计模式,它允许程序在运行中动态的选择不同的行为方式进行动态执行。策略模式的核心思想是将行为封装在一个个独立的类中,这些类实现了相同的接口或抽象类,客户端可以通过接口来调用不同的实现,而不知道具体的实现细节。下面来看一个具体的案例。

        现在的移动支付非常的便捷,而且有很多支付方式,假如让你负责支付路由的设计该如何设计,如何实现支付渠道的选择的呢?

        比如用户支付时可以选择支付宝、微信、银行卡,那系统底层是如何进行操作的,后期如果在加入新的支付方式,该如何进行扩展呢?

        当然如果你使用 if else 肯定是能实现的,但这种代码可读性差、可维护性差,而且不利于扩展,使用策略模式就能优雅的解决这些问题。

二、Spring Plugin

        Spring Plugin 是 Spring 框架的一个扩展,用于实现插件化开发。它提供了插件注册、加载、卸载等功能。Spring Plugin 提供了一种简单而有效的方式来实现插件化开发,使得应用程序能够更加灵活和易于维护。

        下面通过 Spring Plugin 来实现上面提到的支付路由的策略模式。

        2.1 Spring Plugin 实现策略模式开发

        引入依赖

<dependency>
    <groupId>org.springframework.plugin</groupId>
    <artifactId>spring-plugin-core</artifactId>
    <version>指定版本</version>
</dependency>

        定义支付方式接口

public interface PaymentStrategy extends Plugin<String> {

    /**
     * 支付路由选择
     *
     * @param paymentReq 待处理的订单信息, 入参中携带支付标识
     * @return
     */
    PayResult pay(PaymentReq paymentReq);
}

        具体的支付实现

// 支付宝支付实现
@Service
public class AliPayService implements PaymentStrategy {

    @Override
    public PayResult pay(PaymentReq paymentReq) {
        // 模拟支付宝支付流程
        return new PayResult();
    }

    @Override
    public boolean supports(String payment) {
        // 支付方式是否为支付宝,这里简化一些,正常情况下需要使用枚举
        return "alipay".equals(payment);
    }
}

// 微信支付实现
@Service
public class WechatPayService implements PaymentStrategy {

    @Override
    public PayResult pay(PaymentReq paymentReq) {
        // 模拟微信支付流程
        return new PayResult();
    }

    @Override
    public boolean supports(String payment) {
        // 支付方式是否为微信,这里简化一些,正常情况下需要使用枚举
        return "wechatpay".equals(payment);
    }
}

        假如后期要加入银联支付方式,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

超越不平凡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值