【问题标题】:Strategy Pattern with derived alogrithms calling methods on context具有派生算法在上下文中调用方法的策略模式
【发布时间】:2019-03-20 21:57:47
【问题描述】:

我需要一些设计帮助。 我有一个类,我们称它为可以实现多种行为的宇宙飞船。 我已经定义了一个接口来声明每个行为支持的操作。 到目前为止,这是经典的策略模式。

但是,实现的策略需要能够调用上下文类的动作和方法。我一直在考虑将上下文作为接口本身传递给封装的算法。

这是最好的方法吗?如果没有,你会推荐什么?

【问题讨论】:

  • 我会说这是使用依赖注入的好方法。这样,行为不需要跟踪上下文类型,只需要确保操作/方法在上下文类对象上可用。
  • 你能提供更多关于 Context 类的细节吗?或者把它包括在宇宙飞船的类比中?

标签: design-patterns strategy-pattern


【解决方案1】:

你打算做的事情对我来说似乎很好。要考虑的一件事是不要过多地传递给行为类的方法。例如,如果你的宇宙飞船有一个engine behaviour,只传递你的fuel tankdrive unit,而不是整个宇宙飞船。

【讨论】:

    【解决方案2】:

    根据您的策略需要上下文的用途,您可以考虑使用观察者模式使其基于事件,这样您的策略就不会与上下文耦合。

    例如,如果您的策略导致上下文中的某些内容发生变化,这些可能是某些中介(或您的上下文本身)订阅的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多