写一个Java的策略模式
时间: 2024-01-21 22:18:06 浏览: 28
策略模式是一种行为型设计模式,它定义了一系列算法,将它们封装起来,并且可以使它们之间相互替换。在Java中,我们可以使用接口和抽象类来实现策略模式。
下面是一个简单的例子,假设我们有一个购物车,我们需要计算它的总价。但是,我们可能会根据不同情况使用不同的价格策略,比如,普通会员、VIP会员或者打折活动等。
首先,我们需要定义一个接口,来表示价格策略:
```java
public interface PriceStrategy {
double calculatePrice(double price);
}
```
然后,我们可以实现不同的价格策略类:
```java
public class OrdinaryMemberStrategy implements PriceStrategy {
@Override
public double calculatePrice(double price) {
return price;
}
}
public class VIPMemberStrategy implements PriceStrategy {
@Override
public double calculatePrice(double price) {
return price * 0.8;
}
}
public class DiscountActivityStrategy implements PriceStrategy {
@Override
public double calculatePrice(double price) {
return price * 0.5;
}
}
```
接下来,我们需要一个使用价格策略的类,这里我们用 ShoppingCart 来演示:
```java
public class ShoppingCart {
private List<Double> items = new ArrayList<>();
private PriceStrategy priceStrategy;
public void addItem(double item) {
items.add(item);
}
public void setPriceStrategy(PriceStrategy priceStrategy) {
this.priceStrategy = priceStrategy;
}
public double calculateTotalPrice() {
double totalPrice = 0;
for (double item : items) {
totalPrice += priceStrategy.calculatePrice(item);
}
return totalPrice;
}
}
```
最后,我们可以使用这些类来计算购物车的总价,如下所示:
```java
// 创建购物车
ShoppingCart shoppingCart = new ShoppingCart();
// 添加商品
shoppingCart.addItem(100);
shoppingCart.addItem(200);
shoppingCart.addItem(300);
// 设置价格策略为 VIP 会员
shoppingCart.setPriceStrategy(new VIPMemberStrategy());
// 计算总价
double totalPrice = shoppingCart.calculateTotalPrice();
System.out.println("Total price: " + totalPrice);
```
这样,我们就可以根据不同的情况,选择不同的价格策略来计算购物车的总价了。