Java开发中使用映射关系取代if-else

if-else在使用的过程中语句长,并且不利于测试和维护所以我们在日常的开发中尽量不使用if-else

开发测试用例背景
根据你输入的颜色传出对应的RGB值

颜色RGB值
red#FF0000
blue#0000FF
white#FFFFFF

写一个color的实体类

@Data
public class ColorA {
    private String colorCode;
    private String color;
}

主类

@Test
    void contextLoads() {
        ColorA colorA = new ColorA();
        colorA.setColor("blue");
        System.out.println(colorA.getColor()+"的RGB值为:"+colorCode(colorA.getColor()));

    }

如果在colorCode方法中使用if-else

	/*
	* 使用if-else方法判断颜色的RGB值
	* */
	String colorCode(String color){
	
	    String colorCode = new String();
	    if (color.equals("red")){
	        colorCode="#FF0000";
	    }else if (color.equals("blue")){
	        colorCode="#0000FF";
	    }else if (color.equals("white")){
	        colorCode="#FFFFFF";
	    }
	    return colorCode;
	}

如果在colorCode方法中使用映射

    /*
    * 使用hashmap通过key来取对应的value值
    * */
    String colorCode(String color){
        String colorCode = new String();
        HashMap<String, String> codeMap = new HashMap<>();
        codeMap.put("red","#FF0000");
        codeMap.put("blue","#0000FF");
        codeMap.put("whiteM","#FFFFFF");
        return codeMap.get(color);
    }

运行结果
运行结果

结果显示,两种方法都能达到开发目的,但是使用if-else代码量比hashmap多,如果需要添加一个颜色的话,使用hashmap的方法只要使用put就可以完成添加,而if-else就比较繁琐了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用策略模式来代替if-else,将不同的获取参数的逻辑封装在不同的策略类,然后在controller根据手机号选择对应的策略类来获取参数并返回页面。同时,可以将需要携带的model参数作为参数传递给策略类,让策略类进行处理并返回处理后的结果。以下是示例代码: ``` // 定义策略接口 public interface ParamStrategy { Map<String, Object> getParams(String phone, Map<String, Object> model); } // 定义不同的策略类 public class ParamStrategyA implements ParamStrategy { @Override public Map<String, Object> getParams(String phone, Map<String, Object> model) { // 根据手机号获取参数A Map<String, Object> params = new HashMap<>(); params.put("paramA", "valueA"); // 处理model参数 model.put("keyA", "valueA"); return params; } } public class ParamStrategyB implements ParamStrategy { @Override public Map<String, Object> getParams(String phone, Map<String, Object> model) { // 根据手机号获取参数B Map<String, Object> params = new HashMap<>(); params.put("paramB", "valueB"); // 处理model参数 model.put("keyB", "valueB"); return params; } } // 在controller使用策略模式获取参数并返回页面 @Controller public class MyController { private Map<String, ParamStrategy> strategyMap = new HashMap<>(); public MyController() { // 初始化策略映射 strategyMap.put("phoneA", new ParamStrategyA()); strategyMap.put("phoneB", new ParamStrategyB()); } @GetMapping("/getParams") public String getParams(@RequestParam("phone") String phone, Model model) { // 根据手机号选择对应的策略类 ParamStrategy strategy = strategyMap.get(phone); if (strategy == null) { throw new IllegalArgumentException("Invalid phone number"); } // 获取参数并处理model参数 Map<String, Object> params = strategy.getParams(phone, model.asMap()); // 将参数添加到model model.addAllAttributes(params); // 返回页面 return "myPage"; } } ``` 注意:以上代码仅为示例,实际使用时需要根据具体情况进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值