Java 策略模式示例的性能

Java 策略模式示例的性能,java,performance,design-patterns,Java,Performance,Design Patterns,我试图以不同的方式实现中所示的战略模式示例。以下是我的想法: /** My wrapper idea for implementing the strategy pattern **/ class Calculator{ static public final int OPTION_ADD = 1; static public final int OPTION_SUBTRACT = 2; static public final int OPTION_MULTIPLY =

我试图以不同的方式实现中所示的战略模式示例。以下是我的想法:

/** My wrapper idea for implementing the strategy pattern **/
class Calculator{
    static public final int OPTION_ADD = 1;
    static public final int OPTION_SUBTRACT = 2;
    static public final int OPTION_MULTIPLY = 3;

    //The following objects are the same as the ones in Wikipedia
    private Add add;
    private Subtract subtract;
    private Multiply multiply;

    public Calculator(){
        add = new Add();
        subtract = new Subtract();
        multiply = new Multiply();
    }

    public int execute(int a, int b, int option){
        switch(option){
        case OPTION_ADD:
            return add.execute(a, b);
        case OPTION_SUBTRACT:
            return subtract.execute(a, b);
        case OPTION_MULTIPLY:
            return multiply.execute(a, b);
        }
        return -1;
    }
}

class StrategyStatic {
    public static void runStrategy() {
        Calculator calculator = new Calculator();

        int resultA = calculator.execute(3,4,Calculator.OPTION_ADD);
        int resultB = calculator.execute(3,4,Calculator.OPTION_SUBTRACT);
        int resultC = calculator.execute(3,4,Calculator.OPTION_MULTIPLY);

        System.out.println("Result A : " + resultA );
        System.out.println("Result B : " + resultB );
        System.out.println("Result C : " + resultC );
    }
}
然而,当我运行代码8亿次时,维基百科的代码片段速度却快了3%。为什么?


创建和销毁对象的加法、减法和乘法速度是否比只创建一个包装对象的速度更快?包装对象只包含每种类型的一个实例,并且只根据运行时选择的选项调用每个方法?

您实现的不再是策略模式。就性能而言,3%在误差范围内。如果看不到这两个完整的工作示例,就很难判断这种开销来自何处。@Leffebrene,为什么它不再是一种策略模式?因为策略模式将使用该行为的客户端与该行为的实现分离。在Wikipedia的例子中,上下文类对加法、减法和乘法行为的实现一无所知。在您的示例中,这些与计算器类紧密结合。@Leffebrene谢谢!一个完整的工作示例在中。我仍然不知道为什么我的代码片段看起来比较慢。