【发布时间】:2021-01-19 07:04:11
【问题描述】:
我想在代码中使用不同的操作来摆脱 Switch。在这种情况下可以使用策略模式来完成吗(或者有其他方法吗?):
public interface Strategy {
BigDecimal minus(BigDecimal a, BigDecimal b);
BigDecimal sum(BigDecimal a, BigDecimal b);
BigDecimal pow(BigDecimal a, int n);
}
public class Minus implements Strategy {
public BigDecimal minus(BigDecimal a, BigDecimal b) {
return a.subtract(b);
}
}
public class Sum implements Strategy{
public BigDecimal sum(BigDecimal a, BigDecimal b) {
return a.add(b);
}
public BigDecimal pow(BigDecimal a, int n) {
return a.pow(n);
}
}
public class Calc {
private Strategy strategy;
private BigDecimal a;
private BigDecimal b;
private int n;
public Calc(Strategy strategy, BigDecimal a, BigDecimal b, int n) {
this.strategy = strategy;
this.a = a;
this.b = b;
this.n = n;
}
public void calculate(String operation) {
switch (operation) {
case "SUM":
strategy.sum(a, b);
break;
case "POW":
strategy.pow(a, n);
break;
case "MINUS":
strategy.minus(a, b);
}
}
}
ps:代码不起作用,因为我不明白如何在不从 Sum 类中删除 pow 方法的情况下实现 Strategy 接口。
【问题讨论】:
标签: java design-patterns switch-statement strategy-pattern