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));
    
    
  • 相关阅读:
    Spring Boot----处理异常
    Spring Boot----SpringBoot中SpringMVC配置原理
    git----常见问题
    源码分析----Mybatis
    spring----一些xml配置
    Spring MVC----spring MVC 异常处理
    java----小游戏
    java----垃圾回收机制
    java----常见jar包
    anconda安装
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14145222.html
Copyright © 2011-2022 走看看