耦合策略和非耦合策略有什么区别?
谢谢回答。
当策略类具有上下文知识,或客户端了解策略具体类时,策略将被耦合。
我们可以在这里(稍作编辑)中阅读:
如果将上下文对象传递给策略,则策略和上下文之间存在耦合关系。通常每个策略都需要来自上下文的数据或必须向上下文返回一些处理后的数据。这可以通过两种方式实现。
- 创建一些附加类以封装特定数据。
- 将上下文对象本身传递给策略对象。策略对象可以直接在上下文中设置返回数据。
当需要传递数据时,应分析每种方法的缺点。例如,如果创建了一些附加类来封装 额外的数据,则应特别注意哪些字段包含在类中。也许在当前实现中所有 所需字段都已添加,但也可能在未来某些新的策略具体类需要来自上下文的数据, 而这些数据不包括在那些附加类中。此处还应指出另一个事实: 很可能会有一些策略具体类不使用在附加类中传递给它的字段。