Java 代码 switch 分支过多,怎么改写比较优雅呢?

2023-01-30 09:34:31 +08:00
 NoKey

一个收到消息,分发给不同的处理方法的代码

消息类型已经有十几种了

使用 switch 来根据消息类型跳转不同的处理方法

这个 switch 看起来就很庞大了

请教一下,有没有很好的方式来重构这种情况的代码呢

谢谢~

5944 次点击
所在节点    程序员
51 条回复
WilliamYang
2023-01-30 12:58:05 +08:00
switch 分发已经是最优解了
pennai
2023-01-30 12:58:42 +08:00
策略模式先苟着,当策略模式也感觉过多的时候可以用规则引擎
s1e42NxZVE484pwH
2023-01-30 15:07:28 +08:00
ZiLong
2023-01-30 16:10:36 +08:00
我看过一篇文章,switch 最大的问题还是扩展性问题(违背了开闭原则),然后里面列举了 7 种方式改善 switch ,基本的思想和方法都覆盖到了 [重构 Java switch 语句的七种方法]( https://juejin.cn/post/7149189951895617550)
Cloutain
2023-01-30 17:32:07 +08:00
那完了,反汇编引擎就是 switch 一层套一层
ssdold
2023-01-30 17:39:33 +08:00
@Ciallo 一样一样的,if/else
mmuggle
2023-01-30 17:41:50 +08:00
既然要重构,那就用点设计模式吧,策略模式加工厂模式
fuis
2023-01-30 18:25:41 +08:00
别改了,能用就行
zhouhu
2023-01-30 19:40:35 +08:00
升级到 Java 17
newmlp
2023-01-31 09:37:40 +08:00
十几种还多啊,一点都不多,没必要重构
vinceall
2023-01-31 16:13:08 +08:00
我喜欢用枚举+函数接口,映射到不同处理策略

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/911506

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX