在HarmonyOS NEXT开发中一个列表有超过10种以上的item类型,有什么好的分发处理手段吗?

在HarmonyOS NEXT开发中一个列表有超过10种以上的item类型,有什么好的分发处理手段吗?

阅读 587
1 个回答

可以尝试表驱动的方法:对于逻辑表达模式固定的 if…else 代码,可以通过某种映射关系,将逻辑表达式用表格的方式表示;再使用表格查找的方式,找到某个输入所对应的处理函数,使用这个处理函数进行运算。
适用场景逻辑表达模式固定的 if…else,实现与示例

if (param.equals(value1)) { 
  doAction1(someParams); 
} else if (param.equals(value2)) { 
  doAction2(someParams); 
} else if (param.equals(value3)) { 
  doAction3(someParams); 
} 
// ... 
可重构为 
 
Map<?, Function<?> action> actionMappings = new HashMap<>(); // 这里泛型 ? 是为方便演示,实际可替换为你需要的类型 
 
// When init 
actionMappings.put(value1, (someParams) -> { doAction1(someParams)}); 
actionMappings.put(value2, (someParams) -> { doAction2(someParams)}); 
actionMappings.put(value3, (someParams) -> { doAction3(someParams)}); 
 
// 省略 null 判断 
actionMappings.get(param).apply(someParams);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进