策略模式干掉if-else,switch
2024-10-21 05:58:21
1.传统if -else 写法
String nodeModelStr = "";
if (nodeType == NodeType.START){
StartModel startModel = JSON.parseObject(nodeModelStr,StartModel.class)
}else if(nodeType == NodeType.END){
EndModel endModel = JSON.parseObject(nodeModelStr,EndModel.class)
}
2.策略模式写法
使用了lambda表示里,map里key是NodeType,value是方法对象Function<String,BaseModel>(方法入参是String类型,返回值类型是BaseModel)
如下示例中nodeModelStr就是方法入参,返回值是BaseModel
private static Map<NodeType, Function<String,BaseModel>> checkModelTypeDispatcher = new HashMap<NodeType, Function<String, BaseModel>>(){{
put(NodeType.START,nodeModelStr -> JSON.parseObject(nodeModelStr,StartModel.class));
put(NodeType.END,nodeModelStr -> JSON.parseObject(nodeModelStr,EndModel.class));
}};
Function<String,BaseModel> function = checkModelTypeDispatcher.get(nodeType);
BaseModel baseModel = function.apply(JSON.toJSONString(node));
最新文章
- Android 自定义RecyclerView 实现真正的Gallery效果
- Pig与Hive的区别
- 实验三 敏捷开发与XP实践(改)
- Shell_Oracle Erp和其他系统Interface资料传输通过Shell进行控制(案例)
- wxPython + Boa 练习程序
- CentOS7.1 JDK安装 和 CentOS7.1配置yum源
- About gpref O(n2) -->; O(1)
- 把Excel数据导入到数据库
- Weekend counter
- jar包生制作几种方法,jar包导出三种方法:eclipse导出、jar命令、FatJar插件
- easyui datagrid分页参数获取
- Java EE基础之JSP(二)
- 过滤器Filter(17/4/8)
- 使用Asp.Net MVC开发兼职文章系统
- window.scroll原生滚动
- eMMC ext4综述【转】
- jQuery插件初级练习3
- 【Algorithm】自底向上的归并排序
- Django2.1更新日志
- AngularJS入门讲解3:$http服务和路由讲解