公司的Auth服务使用了策略模式来实现对不同算法的动态处理,学习一下
先盗图一张,模式图如下

设计模式——策略模式应用

  1. 先定义一个Strategy接口
  public interface AuthStrategy{
  		//用于动态匹配策略
 	 	match(str);
		//执行鉴权操作
		doAuth();
		
}
  1. 定义几个不同的实现类:
@Component
public class UserTokenStrategy implements AuthStrategy{
	//...方法实现
}

@Component
public class TerminalTokenStrategy implements AuthStrategy{
	//...方法实现
}
  1. 调用接口
@ Service("authService")
public class AuthServiceImpl implements AuthService {
    @ Autowired//采用list注入所有的实现bean,也可以单个注入@Qualifier
    private List<AuthStrategy> authStrategies;
    @ Override
    public void doAuth(String str) {
    
    	//遍历所有策略bean
        for (AuthStrategy authStrategy : authStrategies) {
        
       		 //根据需要找出对应的策略算法,并执行鉴权操作
            if (authStrategy.match(str)) {
               	authStrategy.doAuth();
                break;
            }
        }
      
    }

相关文章:

  • 2021-11-28
  • 2021-04-09
  • 2021-07-22
猜你喜欢
  • 2021-08-23
  • 2022-12-23
  • 2021-12-12
  • 2021-12-05
  • 2021-09-09
  • 2021-12-27
相关资源
相似解决方案