策略模式 和 命令模式 有什么区别?我也在寻找 Java 中的一些示例。
原文由 Krishna 发布,翻译遵循 CC BY-SA 4.0 许可协议
策略模式 和 命令模式 有什么区别?我也在寻找 Java 中的一些示例。
原文由 Krishna 发布,翻译遵循 CC BY-SA 4.0 许可协议
其他答案 中已经给出了单词。这里是具体代码的区别。
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 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
通常,命令模式用于从 需要完成的事情 中创建一个对象——接受一个操作及其参数并将它们包装在一个对象中以进行记录、保留以供撤消、发送到远程站点等。有将往往是大量不同的 Command 对象,它们随时间经过系统中的给定点,并且 Command 对象将包含描述所请求操作的不同参数。
另一方面,策略模式用于指定应该 如何 做某事,并插入到更大的对象或方法中以提供特定的算法。排序策略可能是合并排序,可能是插入排序,或者可能是更复杂的东西,比如如果列表大于某个最小大小则只使用合并排序。 Strategy 对象很少像 Command 对象那样受到大量洗牌,而是经常用于配置或调整目的。
这两种模式都涉及将代码和可能的单个操作参数从包含它们的原始类分解到另一个对象中,以提供独立的可变性。不同之处在于实践中遇到的用例和每个模式背后的意图。