Java中如何替换掉if-else(策略+枚举)
在Java中,可以使用策略模式和枚举来替换if-else结构。以下是一个简化的例子:
假设我们有一个类,根据不同的枚举值执行不同的操作。
首先,定义一个枚举:
public enum Operation {
PLUS,
MINUS,
TIMES,
DIVIDE;
}
然后,创建一个策略接口:
public interface Strategy {
int performOperation(int a, int b);
}
接下来,实现该接口的不同策略:
public class PlusStrategy implements Strategy {
@Override
public int performOperation(int a, int b) {
return a + b;
}
}
public class MinusStrategy implements Strategy {
@Override
public int performOperation(int a, int b) {
return a - b;
}
}
// 其他策略类似...
最后,我们创建一个上下文类,它根据不同的枚举值使用不同的策略:
import java.util.HashMap;
import java.util.Map;
public class Context {
private static final Map<Operation, Strategy> strategies = new HashMap<>();
static {
strategies.put(Operation.PLUS, new PlusStrategy());
strategies.put(Operation.MINUS, new MinusStrategy());
// 其他策略的映射...
}
public int perform(Operation operation, int a, int b) {
return strategies.get(operation).performOperation(a, b);
}
}
使用上下文类执行操作:
public class Main {
public static void main(String[] args) {
Context context = new Context();
int result = context.perform(Operation.PLUS, 3, 4);
System.out.println(result); // 输出7
}
}
这个例子展示了如何使用策略模式和枚举来替换if-else结构,使代码更加清晰和可扩展。
评论已关闭