zoukankan      html  css  js  c++  java
  • 策略模式干掉if-else,switch

    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));
    
    
  • 相关阅读:
    dockerk个人学习(0)
    ubuntu编译python源码的坑
    查找大目录
    ubuntu 远程gui显示
    paramiko模块
    python open和file的区别
    python type metaclass
    python 生成器 迭代器 yiled
    博客暂停更新,请移步新主页
    win10禁用自动更新服务
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14145222.html
Copyright © 2011-2022 走看看