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

查看 426|回复 38
finab   
* switch 放到工厂类里面, case 的逻辑都抽成类, 注意 SRP
* 使用责任链, 好处是不需要大量的 switch/if, 坏处是不好理解
hyqCrystal   
6 楼的表驱动模式
qua   
工厂加策略
coala   
如果用工厂,创建策略的时候还不是要判断类型一长串 switch ,有区别吗
potatowish   
才十几个, 就这样吧, 几十个了可以用策略模式
Achieve7   
可以使用策略模式,把不同的消息类型处理逻辑划分到独立的实现类中,这些实现类都实现一个公共接口,每个实现类添加一个枚举类型属性,区分消息类型。最后定义一个策略处理类,获取公共接口下所有实现类的对象,按照每次接收的消息类型过滤得到对应的实现类对象,调用其消息处理方法即可。
fkdog   
这是典型的策略+工厂的场景, 用个 dispatcher 进行分发就好了. 如果能够确定逻辑, 甚至直接拿枚举写也行
levelworm   
分情况。
如果 switch 分支内的逻辑很简单,那么 switch 就是最优解,你做成多态并不会优雅到哪里去,分支判断的逻辑塞到各个子类里去的话反而不直观也不好维护。
如果 switch 分支内的逻辑很复杂,涉及到 CRUD 、缓存、RPC 等调用,那么楼上有答案。
finab   
我感觉 switch 里每项不多的话,还是它最优雅。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部