我想知道这种情况是否有任何设计模式:
private static boolean check(String s) {
if(isBook(s)) {
System.out.println("Book");
return false;
}else if(isEmail(s)) {
System.out.println("Email");
return false;
}
return true;
}
private static boolean isBook(String s) {
if(s.equals("B")) return true;
return false;
}
private static boolean isEmail(String s) {
if(s.equals("E")) return true;
if(s.length() > 4) return true;
return false;
}
检查方法中会有很多isXXX,但我不想有很多if-else语句。
答案 0 :(得分:1)
不是为每种可能的类型创建一个is ...方法,而是引入一个枚举并创建一个返回该类型的方法。
这样您就可以轻松使用switch语句。
答案 1 :(得分:1)
由于你有很多isXXX检查,我会使系统更通用,以避免一个巨大的开关(或if if else)
private static boolean check(String s, Collection<Predicate<String>> rules)
{
return rules.stream()
.noneMatch(rule -> rule.test(s));
}
声明您的规则如下
Predicate<String> isBook = s -> s.equals("B");
Predicate<String> isEmail = s -> s.equals("E") || s.length() > 4;
用法
check("E", Arrays.asList(isBook, isEmail)); //false
check("B", Arrays.asList(isBook, isEmail)); //false
check("Emo", Arrays.asList(isBook, isEmail)); //true
check("Email", Arrays.asList(isBook, isEmail)); //false