java使用策略模式代替if else
时间: 2023-07-25 11:27:22 浏览: 122
是的,可以使用策略模式来代替 if else 语句。策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装起来,使它们可以相互替换。这样就可以在运行时动态地选择算法,而不必使用 if else 语句来判断。
下面是一个简单的例子,使用策略模式来计算商品的折扣价格:
首先,定义一个 DiscountStrategy 接口,其中包含一个计算折扣价格的方法:
```java
public interface DiscountStrategy {
double calculateDiscount(double price);
}
```
然后,实现几个具体的 DiscountStrategy 实现类,如 NoDiscountStrategy、FixedDiscountStrategy、PercentageDiscountStrategy。这些类分别表示不打折、固定金额折扣、百分比折扣等不同的折扣策略。
最后,在需要计算折扣价格的地方,使用一个 DiscountContext 来选择具体的 DiscountStrategy 实现类,并调用其 calculateDiscount 方法:
```java
public class DiscountContext {
private DiscountStrategy strategy;
public DiscountContext(DiscountStrategy strategy) {
this.strategy = strategy;
}
public void setStrategy(DiscountStrategy strategy) {
this.strategy = strategy;
}
public double calculateDiscountPrice(double price) {
return strategy.calculateDiscount(price);
}
}
```
使用时,可以这样调用:
```java
DiscountContext context = new DiscountContext(new PercentageDiscountStrategy(0.2));
double originalPrice = 100.0;
double discountedPrice = context.calculateDiscountPrice(originalPrice);
```
这样,就可以根据具体的折扣策略来计算折扣价格,而不必使用 if else 语句来判断。同时,如果需要添加新的折扣策略,只需要实现一个新的 DiscountStrategy 实现类,并在 DiscountContext 中设置即可。
阅读全文