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

公司的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;
            }
        }
      
    }

一句话总结:定义一系列算法并可以互相替换。
生活中的例子:图片的格式、jpg/jepg,压缩文件的格式。
解决什么问题:做一件事情有很多种方法。

项目里面怎么用:1,购物车里面的付款方式;2,不同鉴权策略;3,不同的供应商或合作方

模式结构:声明一个顶级接口,定义一个策略方法,具体的实例都要实现这个接口。
框架里面使用:hibernate的主键生成策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值