【一】策略模式:使用案例

策略模式的了解和工作中的案例

一:策略模式

指的是可以实现目标的方案集合,根据不同的入参,策略之间是可以相互替换的。

比如我们再登录某一个平台的时候,可以有多种登录方式( 用户名+密码,手机号+验证码,手机号+密码,或者第三方认证登录)这些登录方式即为不同的策略。

LoginType loginType = "登录方式";
if (loginType == 账号+密码) {
   
        账号+密码登录的流程
        } else if (loginType == 手机号+验证码) {
   
        手机号+验证码的流程
        } else if (loginType == 手机号+密码) {
   
        手机号+密码的流程
        } else if(loginType == 第三方认证){
   
        微信/qq授权的流程
        }else{
   
        暂不支持的登录方式
        }

如上代码,虽然写起来简单,但违反了面向对象的 2 个基本原则:

单一职责原则:一个类只有1个发生变化的原因,之后修改任何逻辑,当前方法都会被修改,维护比较麻烦。
开闭原则:对扩展开放,对修改关闭
当我们需要增加或减少某种登录方式时,不可避免的要修改该段代码,特别是当 if-else 块中的代码量比较大时,后续的扩展和维护会变得非常复杂且容易出错。针对上述问题我们可以采用设计模式解决,比如策略模式就很好的解决了此类问题。

二:策略模式的实现方式

1. 提供公共接口或抽象类,定义需要使用的策略方法。
2. 多个实现策略抽象类的实现类。
3. 环境类,对多个实现类的封装,提供接口类型的成员量。
4. 客户端 调用环境类 进行不同策略的切换。

案例

1:策略的定义(首先定义一个接口)

public interface OauthStrategyService<T> {
   
    /**
     * 授权策略
     * @param loginUserDto
     * @return
     */
    ResponseVO oauthStrategy(LoginUserDtoRequest loginUserDto) throws BizException;
}

2:策略的实现

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值