gpt4 book ai didi

design-patterns - 使用策略模式和命令模式

转载 作者:行者123 更新时间:2023-12-03 04:36:33 26 4
gpt4 key购买 nike

这两种设计模式都封装了算法并将实现细节与其调用类解耦。我能看出的唯一区别是策略模式接受执行参数,而命令模式则不接受。

在我看来,命令模式要求在创建它时所有执行信息都可用,并且它能够延迟其调用(可能作为脚本的一部分)。

什么决定指导是否使用一种模式或另一种模式?

最佳答案

我提供了几个 GoF 设计模式的封装层次结构表,以帮助解释这两种模式之间的差异。希望它能更好地说明每个封装的内容,以便我的解释更有意义。

首先,层次结构列出了给定模式的适用范围,或者用于封装某些细节级别的适当模式,具体取决于您从表的哪一侧开始。

design pattern encapsulation hierarchy table

从表中可以看出,策略模式对象隐藏了算法实现的细节,因此使用不同的策略对象将以不同的方式执行相同的功能。每个策略对象可能针对特定因素进行优化或针对某些其他参数进行操作;并且,通过使用通用接口(interface),上下文可以安全地使用其中任何一个。

命令模式封装的细节级别比算法小得多。它对向对象发送消息所需的详细信息进行编码:接收者、选择器和参数。将流程执行的一小部分具体化的好处是,可以以通用方式在不同的时间点或位置调用此类消息,而无需对其细节进行硬编码。它允许消息被调用一次或多次,或者传递到系统的不同部分或多个系统,而不需要在执行之前知道特定调用的细节。

正如设计模式的典型情况一样,它们并不要求所有实现在细节上都相同才能具有模式名称。细节在实现以及对象中编码的数据与方法参数中编码的数据方面可能有所不同。

关于design-patterns - 使用策略模式和命令模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com