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

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

阅读 602
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);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进