Design patterns 战略模式:耦合战略与非耦合战略

Design patterns 战略模式:耦合战略与非耦合战略,design-patterns,strategy-pattern,decoupling,coupling,Design Patterns,Strategy Pattern,Decoupling,Coupling,耦合策略和非耦合策略之间的区别是什么 感谢您的回答。当策略类了解上下文时,或者当客户知道具体的策略类时,策略就会耦合起来。 我们可以阅读(通过一些小的编辑): 通常,每个策略都需要来自上下文的数据,或者必须将一些处理过的数据返回到上下文。这可以通过两种方式实现 创建一些附加类来封装特定数据 将上下文对象本身传递给策略对象。strategy对象可以直接在上下文中设置返回数据 在传递数据时,应分析每种方法的缺点。例如,如果创建一些类来封装 如果需要其他数据,应特别注意哪些字段是 包括在课堂上。也许在

耦合策略和非耦合策略之间的区别是什么


感谢您的回答。

当策略类了解上下文时,或者当客户知道具体的策略类时,策略就会耦合起来。

我们可以阅读(通过一些小的编辑):

通常,每个策略都需要来自上下文的数据,或者必须将一些处理过的数据返回到上下文。这可以通过两种方式实现

  • 创建一些附加类来封装特定数据
  • 将上下文对象本身传递给策略对象。strategy对象可以直接在上下文中设置返回数据
  • 在传递数据时,应分析每种方法的缺点。例如,如果创建一些类来封装 如果需要其他数据,应特别注意哪些字段是 包括在课堂上。也许在当前的实现中 添加了必填字段,但将来可能会添加一些新策略 具体类需要上下文中未包含的数据 那些额外的课程。此时还应说明另一个事实: 很有可能一些具体的策略类不会 使用在附加类中传递给它的字段

    如果上下文对象被传递给策略,那么策略和上下文之间就存在耦合

    关于战略和客户之间的耦合,我们在同一页中阅读:

    在模式的经典实现中,客户机应该是 了解具体课程的策略。为了解耦 策略类中的客户机类可以使用工厂类 在上下文对象中创建要使用的策略对象。通过 这样,客户机只需向服务器发送一个参数(如字符串) 要求使用特定算法的上下文,完全 策略类的解耦

    无论上下文是谁决定了策略,解耦都是通过向客户机注入具体的策略对象来实现的,因此客户机不知道它是哪个具体的实现,也不知道还有什么其他的实现

    因此,解耦实现是指没有人知道其他具体参与者。