前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式-策略模式(一)

设计模式-策略模式(一)

原创
作者头像
堕落飞鸟
发布2023-05-05 13:56:54
1310
发布2023-05-05 13:56:54
举报
文章被收录于专栏:飞鸟的专栏

策略模式是一种设计模式,它允许在运行时选择算法的行为。策略模式定义了一系列算法,每个算法都完成了相同的任务,但它们使用不同的实现方法。这使得我们能够根据需要灵活地选择要使用的算法,而不必在代码中固定地指定一个算法。

策略模式包括以下角色:

  • 环境(Context):包含一个指向策略对象的引用,并调用策略对象的方法。
  • 抽象策略(Strategy):定义了一个公共接口,所有具体策略都要实现这个接口。
  • 具体策略(Concrete Strategy):实现了抽象策略定义的接口,提供了具体的算法实现。

下面是一个使用策略模式的 Java 示例。假设我们有一个算法接口 SortStrategy,并有两个实现 BubbleSortQuickSort。我们还有一个 SortContext 类,它包含一个指向 SortStrategy 的引用,并可以根据需要切换策略。示例代码如下:

代码语言:javascript
复制
// 抽象策略
interface SortStrategy {
    public void sort(int[] arr);
}

// 具体策略 1
class BubbleSort implements SortStrategy {
    public void sort(int[] arr) {
        // 实现冒泡排序
    }
}

// 具体策略 2
class QuickSort implements SortStrategy {
    public void sort(int[] arr) {
        // 实现快速排序
    }
}

// 环境
class SortContext {
    private SortStrategy strategy;

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

    public void sort(int[] arr) {
        strategy.sort(arr);
    }
}

在这个示例中,我们定义了一个 SortStrategy 接口,其中有一个 sort 方法用于排序。我们还有两个具体的策略实现 BubbleSortQuickSort,它们分别实现了 sort 方法。然后我们定义了一个 SortContext 类,它包含一个 SortStrategy 引用,并可以使用 setStrategy 方法在运行时切换策略。最后,我们调用 sort 方法来使用当前选择的策略对数组进行排序。

使用策略模式的好处在于,它使得算法实现和调用代码分离,从而使得代码更加灵活和可维护。如果我们需要添加一个新的排序算法,只需要实现 SortStrategy 接口并提供具体的实现即可,而不需要修改 SortContext 类的代码。这种灵活性使得策略模式成为许多复杂应用程序中的重要设计模式。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档