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

HarmonyOS
4天前
浏览
收藏 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);
分享
微博
QQ
微信
回复
4天前
相关问题
Listitem点击变色什么方法
2192浏览 • 1回复 待解决
mysql一个问题
2337浏览 • 1回复 待解决
关于索引一个问题
2656浏览 • 1回复 待解决
数据库一个设计问题?
2259浏览 • 1回复 待解决
一个mysql表插入截断问题
2245浏览 • 1回复 待解决
页面截图功能,什么方法?
727浏览 • 1回复 待解决
屏幕旋转计算,什么方案?
936浏览 • 1回复 待解决
Text模拟隐私协议,方案
768浏览 • 1回复 待解决
连接网络信息获取方案
631浏览 • 1回复 待解决
har和hsp转换,方案
662浏览 • 1回复 待解决
一个更新操作必要用到事务
2125浏览 • 1回复 待解决