写一个java的策略模式
时间: 2023-03-10 07:41:17 浏览: 62
Java中的策略模式是一种实现不同行为的方法,它把具体的行为建立在独立的类中,从而使得它们可以被重复使用、替换和交换。其基本思想是将一组行为抽象为一个策略接口,并为其实现类提供不同的实现策略。当需要更改行为时,只需更改策略接口的实现类即可,而不必更改使用策略的客户端代码。
相关问题
写一个Java的策略模式
策略模式是一种行为型设计模式,它定义了一系列算法,将它们封装起来,并且可以使它们之间相互替换。在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);
```
这样,我们就可以根据不同的情况,选择不同的价格策略来计算购物车的总价了。
Java写一个策略模式
Java 是一种面向对象的编程语言,其特点是可移植性、安全性、高性能和易学易用。要编写一个 Java 策略模式,可以按照以下步骤进行:
1. 首先,定义一个接口,它将是所有具体策略的基础。该接口应包含一个方法,以实现策略的核心逻辑。
2. 接着,创建一个或多个实现接口的具体策略类。每个策略类应该包含自己的实现,以处理特定的情况。
3. 定义一个使用策略的上下文类。这个类应该包含一个引用策略接口的成员变量,以及一个方法,用于设置当前策略。
4. 在上下文类中,添加一个方法,它将接受一个策略对象作为参数,并将其设置为当前策略。
5. 最后,实例化一个上下文对象,并调用它的方法,以执行所需的操作。
下面是一个简单的示例代码,演示了如何使用 Java 编写一个策略模式:
```
// 定义策略接口
interface Strategy {
int doOperation(int num1, int num2);
}
// 创建具体策略类
class OperationAdd implements Strategy {
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
class OperationSubtract implements Strategy {
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
class OperationMultiply implements Strategy {
public int doOperation(int num1, int num2) {
return num1 * num2;
}
}
// 定义上下文类
class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2){
return strategy.doOperation(num1, num2);
}
}
// 使用策略模式
public class Main {
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationSubtract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationMultiply());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
}
```
在这个示例中,我们首先定义了一个 Strategy 接口,它包含一个 doOperation() 方法。然后,我们创建了三个具体策略类,它们实现了这个接口,并提供了自己的实现。
接下来,我们定义了一个上下文类 Context,它包含一个 Strategy 成员变量。我们还为 Context 类添加了一个 executeStrategy() 方法,它将接受两个数字作为参数,并根据当前策略执行适当的操作。
最后,在 main() 方法中