【行为型模式】Java设计模式之:策略模式

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

策略模式中通常包含以下角色:文章源自新逸网络-https://www.xinac.net/9370.html

1. 抽象策略(Strategy):定义了所有具体策略类的公共接口,包含了算法的输入和输出。文章源自新逸网络-https://www.xinac.net/9370.html

2. 具体策略(Concrete Strategy):实现了抽象策略接口,并且提供了具体的算法实现。文章源自新逸网络-https://www.xinac.net/9370.html

3. 环境(Context):维护一个对抽象策略对象的引用,并且负责将请求委托给当前策略对象处理。文章源自新逸网络-https://www.xinac.net/9370.html

下面是一个简单的 Java 实现策略模式的示例:文章源自新逸网络-https://www.xinac.net/9370.html

// 抽象策略
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 Client {
    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));
    }
}

在上面的示例中,抽象策略接口定义了所有具体策略类的公共接口,包含了算法的输入和输出。具体策略类实现了抽象策略接口,并且提供了具体的算法实现。环境类维护一个对抽象策略对象的引用,并且负责将请求委托给当前策略对象处理。文章源自新逸网络-https://www.xinac.net/9370.html

使用策略模式可以实现算法的解耦,使得算法的变化独立于使用它们的客户端。同时,策略模式可以提高代码的重用性和可扩展性,因为不同的策略可以共享相同的算法逻辑。但是需要注意的是,由于策略模式需要创建多个策略类,因此可能会增加系统的复杂度和内存消耗。文章源自新逸网络-https://www.xinac.net/9370.html 文章源自新逸网络-https://www.xinac.net/9370.html

weinxin
新逸IT技术
扫一扫关注微信公众号
Admin
  • 本文由 发表于 2023-12-01
  • 转载请注明:https://www.xinac.net/9370.html
评论  0  访客  0
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定