Spring Boot 策略模式实现微信支付宝支付 - 简化支付逻辑
在 Spring Boot 中使用策略模式实现微信支付宝支付,可以按照以下步骤进行:
- 创建一个支付接口,定义支付方法:
 
public interface PaymentStrategy {
    void pay();
}
- 创建微信支付实现类:
 
@Component
public class WechatPaymentStrategy implements PaymentStrategy {
    @Override
    public void pay() {
        // 微信支付逻辑
    }
}
- 创建支付宝支付实现类:
 
@Component
public class AlipayPaymentStrategy implements PaymentStrategy {
    @Override
    public void pay() {
        // 支付宝支付逻辑
    }
}
- 创建一个支付工厂,根据支付类型返回对应的支付实现类:
 
@Component
public class PaymentFactory {
    private final WechatPaymentStrategy wechatPaymentStrategy;
    private final AlipayPaymentStrategy alipayPaymentStrategy;
    public PaymentFactory(WechatPaymentStrategy wechatPaymentStrategy, AlipayPaymentStrategy alipayPaymentStrategy) {
        this.wechatPaymentStrategy = wechatPaymentStrategy;
        this.alipayPaymentStrategy = alipayPaymentStrategy;
    }
    public PaymentStrategy getPaymentStrategy(String type) {
        if ("wechat".equals(type)) {
            return wechatPaymentStrategy;
        } else if ("alipay".equals(type)) {
            return alipayPaymentStrategy;
        }
        throw new IllegalArgumentException("Unsupported payment type: " + type);
    }
}
- 在需要支付的地方使用策略模式进行支付:
 
@RestController
public class PaymentController {
    private final PaymentFactory paymentFactory;
    public PaymentController(PaymentFactory paymentFactory) {
        this.paymentFactory = paymentFactory;
    }
    @PostMapping("/pay")
    public void pay(@RequestParam String type) {
        PaymentStrategy paymentStrategy = paymentFactory.getPaymentStrategy(type);
        paymentStrategy.pay();
    }
}
通过以上步骤,我们就可以根据不同的支付类型选择不同的支付实现类进行支付。在 Spring Boot 中,我们可以使用@Component注解将实现类注册为 Spring Bean,并使用@Autowired注解进行依赖注入。
策略模式的优势:
- 代码解耦: 将不同的支付逻辑分离到不同的实现类中,提高代码可读性和可维护性。
 - 扩展性强: 可以方便地添加新的支付方式,而无需修改原有代码。
 - 易于测试: 每个支付实现类可以独立测试,提高代码质量。
 
使用示例:
假设用户选择微信支付,则代码执行流程如下:
- 用户发起支付请求,传入支付类型为
wechat。 PaymentController调用PaymentFactory获取WechatPaymentStrategy实例。WechatPaymentStrategy执行微信支付逻辑。
策略模式在实际开发中非常实用,可以有效地提高代码质量和可维护性。
原文地址: https://www.cveoy.top/t/topic/04g 著作权归作者所有。请勿转载和采集!