基于springboot的策略模式

本文介绍了一个基于SpringBoot的策略模式应用,通过创建一个支付接口和多个支付策略实现类(如支付宝、微信、云闪付),展示了如何在不同场景中动态选择支付方式,避免了复杂的条件判断,提高了代码的可读性和可维护性。同时,文章提到了策略模式的优缺点,并提供了前端调用接口的示例。
摘要由CSDN通过智能技术生成

基于springboot的策略模式

模块说明

本项目是一个策略模式的案例demo。网上有很多的关于策略模式的例子,这里直接写一下,最简单的使用。

策略模式的思想
比如说对象的某个行为,在不同场景中有不同的实现方式,这样就可以将这些实现方式定义成一组策略,每个实现类对应一个策略,在不同的场景就使用不同的实现类,并且可以自由切换策略。基本就是利用一些简单的策略算法来实现。

策略模式的优点:

1、干掉繁琐的 if、switch 判断逻辑;   
2、代码优雅、可复用、可读性好;    
3、符合开闭原则,扩展性好、便于维护;
4、符合开闭原则;

策略模式的缺点:

1、策略如果很多的话,会造成策略类膨胀;
2、使用者必须清楚所有的策略类及其用途;

开始写一下代码

这里介绍一下写的demo,主要是结合实际情况。现在生活中有很多种支付方式,比如我们去超市买东西,会用手机去扫码支付,一般常用的就是微信、支付宝、云闪付等。

一、定义一个总的策略接口


/**
 * @Author Summer_DM
 * @Summary TODO  定义一个支付的公共父级接口
 * @Version 1.0
 * @Date 2021/9/9 上午 09:52
 **/
public interface IPayment {
    /**
     * 支付
     * @param order
     * @return
     */
    PayResult pay(Order order);
}

二、定义一个订单实体、一个返回结果封装体

/**
 * @Author Summer_DM
 * @Summary TODO  支付订单类
 * @Version 1.0
 * @Date 2021/9/9 上午 09:55
 **/
@Data
public class Order {
    /**
     * 金额
     */
    private int amount;

    /**
     * 支付类型
     */
    private String paymentType;

}

/**
 * @Author Summer_DM
 * @Summary TODO  返回结果类
 * @Version 1.0
 * @Date 2021/9/9 上午 09:54
 **/
@Data
@AllArgsConstructor
public class PayResult {
    /**
     * 支付结果
     */
    private String result;

}

三、定义几个实现的策略结果,去实现策略

/**
 * @Author Summer_DM
 * @Summary TODO  支付宝支付,需要实现支付的接口
 * @Version 1.0
 * @Date 2021/9/9 上午 09:58
 **/
@Service("Alipay")
public class Alipay implements IPayment {
    /**
     * 支付
     *
     * @param order
     * @return
     */
    @Override
    public PayResult pay(Order order) {
        return new PayResult("支付宝支付成功");
    }
}

/**
 * @Author Summer_DM
 * @Summary TODO  云闪付支付,需要实现支付的接口
 * @Version 1.0
 * @Date 2021/9/9 上午 09:59
 **/
@Service("UnionPay")
public class UnionPay implements IPayment {
    /**
     * 支付
     *
     * @param order
     * @return
     */
    @Override
    public PayResult pay(Order order) {
        return new PayResult("云闪付支付成功");
    }
}

/**
 * @Author Summer_DM
 * @Summary TODO  微信支付,需要实现支付的接口
 * @Version 1.0
 * @Date 2021/9/9 上午 09:56
 **/
@Service("WechatPay")
public class WechatPay implements IPayment {
    /**
     * 支付
     *
     * @param order
     * @return
     */
    @Override
    public PayResult pay(Order order) {
        return new PayResult("微信支付成功");
    }
}

四、最后前端调用


/**
 * @Author Summer_DM
 * @Summary TODO  外部调用接口
 * @Version 1.0
 * @Date 2021/9/9 上午 10:01
 **/
@RestController
@RequestMapping("/pay")
public class PayController {
    @Autowired
    private ApplicationContext applicationContext;

    /**
     * 支付接口
     * @param amount
     * @param paymentType
     * @return
     */
    @RequestMapping("/toPay")
    public PayResult pay(@RequestParam("amount") int amount,
                         @RequestParam("paymentType") String paymentType) {
        Order order = new Order();
        order.setAmount(amount);
        order.setPaymentType(paymentType);
        // 根据支付类型获取对应的策略 bean
        IPayment payment = applicationContext.getBean(order.getPaymentType(), IPayment.class);
        // 开始支付
        PayResult payResult = payment.pay(order);
        return payResult;
    }

}

五、使用postman或者浏览器测试
在这里插入图片描述

以前的 策略模式很多都是自己去实现一个context来统一给前端调用,本篇文章写的是基于springboot去管理的,所以,这里直接调用ApplicationContext去getBean(),就可以获取到一个context,当然一定不能忘了在策略实现逻辑那块的@service(“类名”),必须把这个con他凶恶交给spring去管理,我们在调用时,才可以获取到Bean.

以上就是所有的实现,基于springboot,特别简单,一看就懂,写下来,只是为了自己学习和帮助有需要的人。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架。在使用Spring Boot进行模板策略模式登录实战时,我们可以以下几个步骤来实现。 首先,创建一个User类,包含了用户的相关信息,例如用户名和密码等。 接下来,创建一个LoginStrategy接口,定义了登录策略模式中的登录方法。该接口应包含一个方法,用于验证用户的登录信息并返回登录结果。 然后,创建具体的登录策略类,实现LoginStrategy接口。根据需求,可以创建多个具体的登录策略类,每个类实现自己特定的验证逻辑。例如,可以创建UsernamePasswordLoginStrategy类,该类通过验证用户名和密码来验证用户的登录信息。 接着,创建一个LoginContext类,用于控制登录策略的选择和执行。该类应包含一个LoginStrategy类型的属性,用于保存当前使用的登录策略。该类还应提供一个setStrategy方法,用于设置当前的登录策略。在登录方法中,实际的登录操作应交给当前使用的登录策略类来完成。 最后,创建一个Spring Boot应用程序,配置相关的Web接口和视图,用于用户登录操作。在登录接口中,通过LoginContext类来选择并执行相应的登录策略。根据验证结果,可以返回相应的登录成功或失败信息。 总结来说,在使用Spring Boot进行模板策略模式登录实战时,我们需要创建一个User类、一个LoginStrategy接口、多个具体的登录策略类、一个LoginContext类和一个Spring Boot应用程序。通过这些组件的协作,我们可以实现基于模板策略模式的登录功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值