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

HarmonyOS
2024-12-18 15:24:24
497浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

可以尝试表驱动的方法:对于逻辑表达模式固定的 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);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
分享
微博
QQ
微信
回复
2024-12-18 17:40:15


相关问题
Listitem点击变色什么方法
3218浏览 • 1回复 待解决
mysql一个问题
2990浏览 • 1回复 待解决
关于索引一个问题
3336浏览 • 1回复 待解决
数据库一个设计问题?
2987浏览 • 1回复 待解决
一个mysql表插入截断问题
3000浏览 • 1回复 待解决
页面截图功能,什么方法?
1672浏览 • 2回复 待解决
屏幕旋转计算,什么方案?
1913浏览 • 2回复 待解决
一个更新操作必要用到事务
2620浏览 • 1回复 待解决
连接网络信息获取方案
1487浏览 • 1回复 待解决
Text模拟隐私协议,方案
1510浏览 • 1回复 待解决
har和hsp转换,方案
1589浏览 • 1回复 待解决