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

查看 492|回复 38
作者:NoKey   
一个收到消息,分发给不同的处理方法的代码
消息类型已经有十几种了
使用 switch 来根据消息类型跳转不同的处理方法
这个 switch 看起来就很庞大了
请教一下,有没有很好的方式来重构这种情况的代码呢
谢谢~

Switch, 代码, 类型, 重构

7911364440   
策略模式啊
dddd1919   
典型的工厂模式
yaodao   
如果 switch 中的内容比较简单,可以使用枚举类实现抽象方法的简单策略模式。如果比较复杂可以使用监听者模式,广播消息,但每个监听者只处理自己相应的消息。
ql562482472   
使用语言内建的 dispatch 功能
也就是子类型多态
ashong   
switch 都写不优雅 你到底写成啥样了 发出来看看吧
xiangagou   
handlers[event].action()
ashong   
最通用的就是工厂+策略模式修改,几乎不用动脑子,其他模式得看业务匹配情况
nothingistrue   
@ashong 看错了😅
cosmain   
十几种还不算多,如果能做成枚举的话,switch 枚举并无不妥。如果太多做不成枚举,或者稍微有那么一两个变异的分支,用 if else 也不丢人。你要知道,你后面的处理是分发不同方法,那么就算有 50 个,代码行也就 150 行,不多。
这里的重点,还是你的消息类型的命名规则。消息类型如果是依次罗列命名,超过 10 个就麻烦,超过 20 个就没法用了。基本上,超过 20 个类型,就该考虑对消息类型的名称进行归纳分级。如果消息类型有良好的命名规则,消息分发可能就不需要 swtich 、if else 了,十几行代码就能搞定。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部