策略模式,派生算法在上下文中调用方法

时间:2012-12-31 13:12:45

标签: design-patterns strategy-pattern

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

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

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

enter image description here

2 个答案:

答案 0 :(得分:2)

你打算做什么似乎对我好。要注意的一件事是不要过多地传递行为类的方法。例如,如果您的宇宙飞船有engine behaviour,则只能将fuel tankdrive unit传递给您,而不是整个太空船。

答案 1 :(得分:1)

根据您的策略需要上下文的内容,您可以考虑使用Observer模式使其基于事件,以便您的策略不会与上下文相关联。

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