1、定义枚举接收不同的参数使用不同的handler,
2、定义个handerl接口,统一方法处理,每个handler实现该接口
java
public interface IMethodHandler<T, R> {
/**
* 处理统一入口
*
* @param req
*/
R process(T req);
}
```java
3、定义一个简单工厂统一处理
java
@Component
public class ParamTypeFactory {
private ParamTypeFactory() {
}
public IMethodHandlergetParamHandler(String paramType) {
//根据类型获取对应的处理器
Class<IMethodHandler> clazz = ParamHandlerEnums.getParamHandler(paramType);
if (Objects.isNull(clazz)) {
throw new BusinessException("异常");
}
//处理Bean获取
return SpringUtil.getBean(clazz);
}
}
```java
4、A\B\C三个handler实现
java
@Component
@Slf4j
public class AParamHandler implements IMethodHandler<dtoReq, List<dtoResp>> {
@Resource
private ViewMapper ViewMapper;
@Override
public List<dtoResp> process(dtoReqreq) {
return null;
}
}
通过入方式将枚举入参作为map的key,这样生成一个HandlerMap键值对
java
@Resource
private Map<String, IMethodHandler> iMethodHandlerMap;