策略模式和命令模式的区别

新手上路,请多包涵

策略模式命令模式 有什么区别?我也在寻找 Java 中的一些示例。

原文由 Krishna 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 554
2 个回答

通常,命令模式用于从 需要完成的事情 中创建一个对象——接受一个操作及其参数并将它们包装在一个对象中以进行记录、保留以供撤消、发送到远程站点等。有将往往是大量不同的 Command 对象,它们随时间经过系统中的给定点,并且 Command 对象将包含描述所请求操作的不同参数。

另一方面,策略模式用于指定应该 如何 做某事,并插入到更大的对象或方法中以提供特定的算法。排序策略可能是合并排序,可能是插入排序,或者可能是更复杂的东西,比如如果列表大于某个最小大小则只使用合并排序。 Strategy 对象很少像 Command 对象那样受到大量洗牌,而是经常用于配置或调整目的。

这两种模式都涉及将代码和可能的单个操作参数从包含它们的原始类分解到另一个对象中,以提供独立的可变性。不同之处在于实践中遇到的用例和每个模式背后的意图。

原文由 Jeffrey Hantin 发布,翻译遵循 CC BY-SA 2.5 许可协议

其他答案 中已经给出了单词。这里是具体代码的区别。

 public class ConcreteStrategy implements BaseStrategy {

    @Override
    public void execute(Object argument) {

        // Work with passed-in argument.

    }

}


 public class ConcreteCommand implements BaseCommand {

    private Object argument;

    public ConcreteCommand(Object argument) {
        this.argument = argument;
    }

    @Override
    public void execute() {

        // Work with own state.

    }

}

原文由 BalusC 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题