使用【key-value】代替【if-else】

昨天在查看javascript优化的文章,看到一个用key-value代替if-else的技巧。

做着说是key-value比if-else要快。

这个我自己没有测试,姑且记下吧。

statement = {
	"true":function(){
		console.log("true");
	},
	"false":function(){
		console.log("false");
	}
}

if(true){
	console.log("true");
}else{
	console.log("false");
}


自己想想也是if-else是程序结构,key-value是数据结构。

假如都是机器码的话,if-else可能会有指令跳转之类,结构应该比较复杂。key-value应该就是内存地址的跳转。

可以使用策略模式来代替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"; } } ``` 注意:以上代码仅为示例,实际使用时需要根据具体情况进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值