妙博客

主机评测 香港服务器 洛杉矶VPS测评

设计模式-JAVA-策略模式(Strategy)

策略模式(Strategy)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,并使它们可以互换。策略模式使得算法可以独立于使用它们的客户端而变化。

下面是一个使用策略模式的示例代码:

// 定义一个策略接口
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 StrategyPatternDemo {
    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,并实现了三个具体的算法类 OperationAdd、OperationSubtract 和 OperationMultiply,它们都实现了 Strategy 接口中的 doOperation 方法。

然后我们定义了一个使用策略的上下文类 Context,它包含一个 Strategy 对象,并提供了一个 executeStrategy 方法,用于执行具体的算法。


最后,在客户端代码中,我们创建了一个 Context 对象,并分别传入不同的算法对象,然后调用 executeStrategy 方法执行具体的算法。这样,我们就可以在运行时动态地改变算法,而不需要修改客户端代码。


JAVA7大原则和23种设计模式汇总,点我查看

Copyright Your 142132.com Rights Reserved. 赣ICP备17010829号-2