首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >设计模式-策略模式(二)

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

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

在实际应用中,策略模式也经常与工厂模式一起使用。例如,我们可以使用工厂模式创建策略对象,从而使代码更加灵活和易于维护。示例代码如下:

代码语言:javascript
复制
// 工厂类
class SortFactory {
    public static SortStrategy createSortStrategy(String strategyType) {
        switch (strategyType) {
            case "bubble":
                return new BubbleSort();
            case "quick":
                return new QuickSort();
            default:
                throw new IllegalArgumentException("Invalid strategy type: " + strategyType);
        }
    }
}

// 环境
class SortContext {
    private SortStrategy strategy;

    public SortContext(String strategyType) {
        this.strategy = SortFactory.createSortStrategy(strategyType);
    }

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

在这个示例中,我们定义了一个 SortFactory 工厂类,它根据输入的字符串参数返回一个具体的策略对象。然后我们修改了 SortContext 类的构造函数,使它使用工厂类来创建策略对象。这样,我们就可以通过修改工厂类来添加或删除策略对象,而不需要修改 SortContext 类的代码。

使用策略模式和工厂模式的组合,使得代码更加灵活和可维护。我们可以根据需要动态地选择算法,并通过工厂模式来创建相应的策略对象。这种设计模式的优点在于,它将算法实现和调用代码解耦,使得我们能够更加灵活地应对需求变化,同时保持代码的清晰和可维护性。

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

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

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

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

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