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));
    
    
  • 相关阅读:
    开篇词The Start以及[Vjudge][HDU2242]空调教室
    [故地重游][NOIP2019]格雷码
    关于非触
    致诸君
    三角形的概率
    [HDU5970] 最大公约数
    [51Nod1534] 棋子游戏
    [TJOI2018] 数学计算
    [CF938D] Buy a Ticket
    [HDU4143] A Simple Problem
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14145222.html
Copyright © 2011-2022 走看看