java - 执行两个或多个算法的策略模式

标签 java design-patterns strategy-pattern

任何人都可以为我提供一个策略模式的示例吗?该策略模式不是使用一种算法,而是依次使用两种或多种算法?

也许我需要将这些算法插入到列表中,然后使用 for 执行该列表中的所有算法?

该列表必须是上下文类的公共(public)属性吗?

请问谁能给我一个伪代码示例吗?

最佳答案

您可以实现一个策略,以特定顺序调用所有算法。我的示例与 Strategy pattern 中描述的类链接。 :

class MultiAlgorithm implements Strategy {

    private Strategy[] strategies;

    public MultiAlgorithm(Strategy... strategies) {
        if (strategies == null || strategies.length == 0) {
            throw new IllegalArgumentException(
                    "Algorithms collection cann't be null!");
        }
        this.strategies = strategies;
    }

    @Override
    public int execute(int a, int b) {
        System.out.println("Called MultiAlgorithm's execute()");
        int result = 0;
        for (Strategy strategy : strategies) {
            result += strategy.execute(a, b);
        }
        return result;
    }
}

使用示例

public static void main(String[] args) throws Exception {
    Context context = new Context(new MultiAlgorithm(new Add(),
            new Multiply(), new Subtract()));
    int result = context.executeStrategy(1, 2);
    System.out.println(result);
}

如你所见,我们必须只实现新的“复杂策略”。模式本人保持不变。

关于java - 执行两个或多个算法的策略模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14542165/

相关文章:

java - 如何将策略模式与自定义排序策略结合使用?

java - 如何找到边框为 "Titled Border"的文本框的标题?

java - 如何更改 jar 文件的编码以管理 "█▓▒ CRIT! ░░╚╡▌▌╞╗░░"等字符?

design-patterns - Haskell IO 输出不正确

Java 8 : Pass object's method & its arguments as parameter

design-patterns - 使用状态模式的对象应该如何转换到下一个状态?

Java 克隆和向下转型

java - Java中如何计算两个数组的交替和?

java - 对策略设计模式感到困惑

c++ - 如何让一个接口(interface)返回不同的数据类型?