如何解决if-else多层嵌套的问题?
- 使用策略模式,if-else中执行的逻辑可以理解为策略,可以将策略方法抽离成接口与实现,然后通过工厂类创建对象实现策略逻辑,这样可以是解决逻辑比较清晰,后期维护增加修改策略也吧比较方便。
- 使用状态模式,if-else的设计思想是当什么条件下做什么事情,而状态模式则是将不同的操作与不同的状态值对应,通过设置状态值来控制逻辑的执行。此处还可以拓展使用二进制位运算,用二进制的每一位代表一种操作,节约空间提升效率。
- 使用多态通过传递不同的参数类型去掉if-else
- 接口分层,根据职责内聚,拆分方法与层次调用减少if-else层级,控制嵌套深度。
- 卫语句,本质也是把多层if-else抽离成带有含义的语句,一方面减少层次,另一方面是判断逻辑一目了然。
- 解决逻辑:理清每个if的判断条件,执行逻辑拆分(拆分成不同策略或者不同状态对应的执行方法)。(降嵌套层次——>消嵌套层析,难理解——>易理解)
switch有哪些奇葩的脾气?
- case后面必须是常量,case如果仅选择一条结果,则需要与break配合使用。
- 最后用default 关键字定义默认方法。
- switch比较字符串实际上是比较字符串的hashcode,对于其他类型可考虑用hashcode进行switch分支判断。