「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」
Java 条件语句
if-else 语句
Java 的 if 条件语句和 C 完全一致。
if (expression_0) {
// statements
} else if (expression_1) {
// statements
} else {
// statements
}
这个代码无需解释
switch-case 语句
switch(expression){
case value_0 :
//语句
break; //可选
case value_1 :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
Java 中的 switch 大体上和 C 的相同,但也有不同的地方。值得一提的是如下几点:
- 同 C 一样,
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 同时需要注意
case后一直执行到break才会停止(或者执行到全部结束),不会在一个 case 结束后自动停止!
- 与 C 不同的是,
- Java 中
switch后面的 expression 可以是byte、short、int或者char。从 Java SE 7 开始,switch 支持字符串String类型了。
- Java 中
(补充)设计模式
对于实际项目中的情况,我们可能有很多种分支,或者每一块的处理流程都复杂,无论用 if 还是 switch 都让代码非常冗长。这时可以考虑采用一些设计模式。
策略模式
我们可以考虑把需要的 if-else 分支的业务逻辑抽取为各种策略,就是把每个分支的处理语句提取出来封装成一个实现了某个 Strategy 接口的类。然后为了让调用者方便完成分支的选择,我们把策略的选择逻辑用一个简单工厂封装:
这种方法其实还是要写一大堆 if-else 的,只是放到了工厂类里,对调用者透明了。
责任链模式
对于更复杂的问题,还可以考虑使用责任链模式,动态地分配处理责任。
这个模式很有意思,就是把一大堆各种分支的处理封装成类,组成一个链条。使用时,我们把选择的条件当作一个请求。请求在这个链上传递,直到链上的某一个对象决定处理这个请求。
例如,这是个分级打日志的责任链例子: