以下两种方法哪个更好?我选择了枚举,因为在典型情况下,子类型多态是最好的方法;这也是编写简单工厂方法时的典型方法。
public class SomeClass {
public SomeEnum returnAType(String someString) {
//implementation bellow
}
private boolean method1() {
//...
}
private boolean method2() {
//...
}
private boolean method3() {
//...
}
}
returnATypeMethod 的第一个实现;这更快,因为如果method1有效,它不会调用method2和method3(可能更多)。
public SomeEnum returnAType(String someString) {
if(method1(someString)) {
SomeEnum.ENUM1.doSomething();
return SomeEnum.ENUM1;
}
if(method2(someString)) {
SomeEnum.ENUM2.doSomething();
return SomeEnum.ENUM2;
}
if(method3(someString)) {
SomeEnum.ENUM3.doSomething();
return SomeEnum.ENUM3;
}
SomeEnum.DEFAULT_ENUM.doSomething();
return SomeEnum.DEFAULT_ENUM;
}
returnATypeMethod 的第二个实现;这更清楚,没有代码重复:
public SomeEnum returnAType(String someString) {
SomeEnum enumType = SomeEnum.DEFAULT_ENUM;
if(method1(someString)) {
enumType = SomeEnum.ENUM1;
}
if(method2(someString)) {
enumType = SomeEnum.ENUM2; }
}
if(method3(someString)) {
enumType = SomeEnum.ENUM3;
}
enumType.doSomething();
return enumType;
}