设计方式一
Map+Java8 函数式接口
// 声明一个 map
function
第一个参数就是 方法里需要接的参数的数据类型
第二个就是 方法里里返回值的数据类型
//对 Function 不太理解可以去百度 一下
public static Map<String,Function<YsFiles, YsFiles>> storageTypeList=new HashMap<>();
//然后 向这个 map put 所需要调用的 方法
public static Map<String, Function<YsFiles, YsFiles>> getStorageTypeList(){
if(CollectionUtils.isEmpty(storageTypeList)){
// storageTypeList.put("传进来的类型" , 调用的具体方法);
storageTypeList.put("oss" , FilesUtil::oss);
storageTypeList.put("file" , FilesUtil::file);
// 如果 后续 还有 第二种 类型 直接 在 map 里put 一个新的方法 就可以了
}
return storageTypeList;
}
//调用
public static void setFileList(YsFiles ysFiles){
// 如果 传过来的是 ysFiles.getStorageType() 是 oss 就调用 map 里 oss 对应的方法
// 如果 后续 还有 第二种 类型 直接 在 map 里put 一个新的方法 就可以了
Function<YsFiles, YsFiles> result = getStorageTypeList().get(ysFiles.getStorageType());
result.apply(item);
}
//调用的具体方法
public static YsFiles oss(YsFiles ysFiles){
System.out.println(ysFiles+"213211111111111");
return ysFiles;
}
方式二
也可以定义成 接口 子类 实现不同的接口 然后根据类型调用不同的接口