Java策略模式

策略模式是一种行为型设计模式,它允许在运行时动态地改变对象的行为。在Java中,策略模式通常由一个接口和多个实现该接口的类组成。

 

下面是一个简单的例子,假设有一个计算器类,它可以执行加、减、乘、除四种操作。我们可以使用策略模式来实现这个计算器类,使得它可以在运行时动态地改变操作。

 

首先,我们定义一个接口`Operation`,它包含一个`calculate`方法,用于执行具体的操作:

public interface Operation {

    double calculate(double num1, double num2);

}

 

然后,我们实现四个具体的操作类,分别是加、减、乘、除:

public class AddOperation implements Operation {

    @Override

    public double calculate(double num1, double num2) {

        return num1 + num2;

    }

}

 

public class SubOperation implements Operation {

    @Override

    public double calculate(double num1, double num2) {

        return num1 - num2;

    }

}

 

public class MulOperation implements Operation {

    @Override

    public double calculate(double num1, double num2) {

        return num1 * num2;

    }

}

 

public class DivOperation implements Operation {

    @Override

    public double calculate(double num1, double num2) {

        if (num2 == 0) {

            throw new IllegalArgumentException("除数不能为0");

        }

        return num1 / num2;

    }

}

 

最后,我们定义一个计算器类`Calculator`,它包含一个`operation`成员变量,用于保存当前的操作。`Calculator`类还包含一个`setOperation`方法,用于设置当前的操作,以及一个`calculate`方法,用于执行计算:

public class Calculator {

    private Operation operation;

 

    public void setOperation(Operation operation) {

        this.operation = operation;

    }

 

    public double calculate(double num1, double num2) {

        if (operation == null) {

            throw new IllegalStateException("操作未设置");

        }

        return operation.calculate(num1, num2);

    }

}

 

现在,我们可以使用策略模式来创建一个计算器对象,并动态地改变操作:

Calculator calculator = new Calculator();

calculator.setOperation(new AddOperation());

double result = calculator.calculate(1, 2); // 3.0

 

calculator.setOperation(new SubOperation());

result = calculator.calculate(3, 2); // 1.0

 

calculator.setOperation(new MulOperation());

result = calculator.calculate(2, 3); // 6.0

 

calculator.setOperation(new DivOperation());

result = calculator.calculate(6, 3); // 2.0

 

通过使用策略模式,我们可以在运行时动态地改变计算器的操作,而不需要修改计算器类的代码。这样,我们可以更加灵活地使用计算器类,同时也更容易扩展和维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在策略模式中,我们创建表示各种策略的对象和一个上下文对象,该对象可以根据其策略对象的不同行为而更改其执行算法。 以下是Java策略模式的示例代码: 首先,我们定义一个策略接口,该接口定义了一个方法calculate(),该方法将由具体策略类实现: ```java public interface Strategy { public int calculate(int num1, int num2); } ``` 然后,我们实现两个具体策略类,它们实现了策略接口并提供了自己的实现: ```java public class AddStrategy implements Strategy { public int calculate(int num1, int num2) { return num1 + num2; } } public class SubtractStrategy implements Strategy { public int calculate(int num1, int num2) { return num1 - num2; } } ``` 接下来,我们定义一个上下文类,该类将使用策略接口来执行算法: ```java public class Context { private Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public int executeStrategy(int num1, int num2) { return strategy.calculate(num1, num2); } } ``` 最后,我们可以在客户端代码中使用上下文对象来执行算法: ```java public class Client { public static void main(String[] args) { Context context = new Context(new AddStrategy()); System.out.println("10 + 5 = " + context.executeStrategy(10, 5)); context = new Context(new SubtractStrategy()); System.out.println("10 - 5 = " + context.executeStrategy(10, 5)); } } ``` 输出结果为: ``` 10 + 5 = 15 10 - 5 = 5 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值