数据校验怎么避免过多的if else
时间: 2023-12-02 14:38:01 浏览: 54
可以使用策略模式来避免过多的if else。策略模式将每种校验规则封装成一个独立的类,然后由一个上下文对象来调用相应的校验规则类进行数据校验。这样可以将复杂的if else逻辑转化为简单的对象调用,提高代码的可读性和可维护性。
例如,假设需要对用户输入的手机号进行校验,可以定义一个手机号校验策略接口:
```
public interface PhoneValidationStrategy {
boolean validate(String phone);
}
```
然后定义不同的手机号校验规则类实现该接口:
```
public class ChinaPhoneValidationStrategy implements PhoneValidationStrategy {
@Override
public boolean validate(String phone) {
// 校验中国手机号的规则
}
}
public class USPhoneValidationStrategy implements PhoneValidationStrategy {
@Override
public boolean validate(String phone) {
// 校验美国手机号的规则
}
}
// 其他国家的手机号校验规则类...
```
最后,在上下文对象中调用相应的校验规则类进行数据校验:
```
public class PhoneValidator {
private PhoneValidationStrategy strategy;
public PhoneValidator(PhoneValidationStrategy strategy) {
this.strategy = strategy;
}
public boolean validate(String phone) {
return strategy.validate(phone);
}
}
```
这样,在使用时只需要创建相应的校验规则类和上下文对象即可:
```
PhoneValidationStrategy strategy = new ChinaPhoneValidationStrategy();
PhoneValidator validator = new PhoneValidator(strategy);
boolean isValid = validator.validate("13800138000");
```