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

2023-05-05 13:57:28 浏览数 (1)

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

代码语言: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 类的代码。

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

0 人点赞