首先,我们需要定义一个接口CalculatorStrategy来表示计算器的策略:

public interface CalculatorStrategy {
    double calculate(double num1, double num2);
}

然后,我们可以实现四种不同的策略类来进行加减乘除运算:

public class AddStrategy implements CalculatorStrategy {
    @Override
    public double calculate(double num1, double num2) {
        return num1 + num2;
    }
}

public class SubtractStrategy implements CalculatorStrategy {
    @Override
    public double calculate(double num1, double num2) {
        return num1 - num2;
    }
}

public class MultiplyStrategy implements CalculatorStrategy {
    @Override
    public double calculate(double num1, double num2) {
        return num1 * num2;
    }
}

public class DivideStrategy implements CalculatorStrategy {
    @Override
    public double calculate(double num1, double num2) {
        if (num2 == 0) {
            throw new ArithmeticException('Cannot divide by zero');
        }
        return num1 / num2;
    }
}

接下来,我们可以创建一个Calculator类来使用策略模式来进行计算:

public class Calculator {
    private CalculatorStrategy strategy;

    public void setStrategy(CalculatorStrategy strategy) {
        this.strategy = strategy;
    }

    public double calculate(double num1, double num2) {
        if (strategy == null) {
            throw new IllegalStateException('Strategy not set');
        }
        return strategy.calculate(num1, num2);
    }
}

最后,我们可以测试一下这个计算器:

public class Main {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
        
        // 使用加法策略
        calculator.setStrategy(new AddStrategy());
        double result = calculator.calculate(5, 3);
        System.out.println('Addition result: ' + result);
        
        // 使用减法策略
        calculator.setStrategy(new SubtractStrategy());
        result = calculator.calculate(5, 3);
        System.out.println('Subtraction result: ' + result);
        
        // 使用乘法策略
        calculator.setStrategy(new MultiplyStrategy());
        result = calculator.calculate(5, 3);
        System.out.println('Multiplication result: ' + result);
        
        // 使用除法策略
        calculator.setStrategy(new DivideStrategy());
        result = calculator.calculate(5, 3);
        System.out.println('Division result: ' + result);
    }
}

这样,我们就使用策略模式实现了一个含加减乘除的计算器。

Java 策略模式实现加减乘除计算器

原文地址: https://www.cveoy.top/t/topic/qDze 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录