spring中如何使用策略模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring中如何使用策略模式相关的知识,希望对你有一定的参考价值。

参考技术A 这里使用登录做例子介绍如何实现登录的多种策略

上图是策略模式的基础模型。
context
Context上下文角色,也叫Context封装角色,起承上启下的作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。
Strategy
策略角色,接口类,封装相同类型策略公共方法,具体策略实现算法
ConcreteStrategy
具体策略实现Strategy中的抽象方法,编写具体算法实现。
至此基本的策略模式就说完了,具体实现看下面在spring中我们如何实现这种策略模式来实现多种登录方式:
在spring中怎样实现Context 上下文角色
/**



具体策略实现
@Component
@Slf4j
public class PhoneChatLoginStrategy implements LoginService
@Override
public LoginType getLoginType()
return LoginType.PHONE;



@Component
@Slf4j
public class WeChatLoginStrategy implements LoginService
@Override
public LoginType getLoginType()
return LoginType.WE_CHAT;



每个策略我们提供了一个枚举,这样方便我们取具体策略。
public enum LoginType
QQ,
WE_CHAT,
PHONE;

我们这里写了两个登录策略,具体调用:
@RestController
@RequestMapping("/user")
@Slf4j
public class PublicUserController
@Autowired
private LoginStrategyFactory loginStrategyFactory;


这样我们就完成了在spring中使用策略模式完成多种登录策略。

以上是关于spring中如何使用策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Spring中如何使用设计模式

spring中策略模式使用

Spring中常见的设计模式——策略模式

面试官:Spring 用了哪些设计模式?说三种即可

策略模式和Spring的结合在项目中的应用

Spring 实现策略模式--自定义注解方式解耦if...else