策略设计模式在spring源码中的应用
策略设计模式的使用
我就结合着我自己的学习,来讲下,我对策略模式的一些理解,首先说,使用背景,简单来说,就是有多种策略的场景下使用,这个说的好像是个废话,举个简单的例子吧
我们就模拟下springmvc源码中,对请求参数的解析逻辑
参数解析接口
public interface ParamResolve {
/**
* 判断当前解析类是否可以解析param该参数,返回true表示支持,返回false表示不支持
* @param param
* @return
*/
boolean isSupportResolve(Object param);
/**
* 解析参数
* @param param
*/
void resolveParam(Object param);
}
参数解析实现类
public class JsonResolve implements ParamResolve{
@Override
public boolean isSupportResolve(Object param) {
return "Json".equals(param);
}
@Override
public void resolveParam(Object param) {
System.out.println("解析json参数");
}
}
public class ListResolve implements ParamResolve {
@Override
public boolean isSupportResolve(Object param) {
return "List".equals(param);
}
@Override
public void resolveParam(Object param) {
System.out.println("解析list参数"