战略设计模式与国家设计模式

时间:2012-05-08 14:46:13

标签: design-patterns state strategy-pattern

我正在阅读关于州模式的link。它看起来像战略模式?这两种模式之间的确切区别是什么?

4 个答案:

答案 0 :(得分:3)

  

国家与战略之间的区别在于意图。使用Strategy,算法的选择相当稳定。使用State,“context”对象状态的改变使其从Strategy对象的“调色板”中进行选择。

请参阅http://sourcemaking.com/design_patterns/state

答案 1 :(得分:2)

  

策略模式与State Pattern非常相似。其中一个   区别在于Context包含状态作为实例变量和   可以有多个任务,其实现可以依赖于   国家,而战略模式战略则作为论点传递   方法和上下文对象没有任何要存储的变量   它

有关详细信息,请参阅Strategy design pattern in java example tutorial

答案 2 :(得分:0)

我认为一个主要区别是:

- 在状态模式中,我们将上下文本身作为参数传递给我们需要分配给上下文的状态具体类的方法,它做了两件事:首先它将自己分配给发送的上下文,其次,它发挥作用。

- 在策略模式中,我们在第一次创建时将策略传递给上下文,因此它保持整个程序的原样,除非我们将相同的变量分配给新的上下文(指针)在内存中使用“new”并为其分配一个新策略,一段时间之后垃圾收集器会用其指定的策略消除旧的上下文。

更明确地说,策略在一个上下文中是固定的,一旦分配它就无法更改,即使上下文没有策略设置器。但是对于 State ,可以将许多状态一个接一个地分配给相同的上下文,因为上下文具有状态的setter。

我希望它很有用。

答案 3 :(得分:0)

在州模式中,通常国家的行为会导致国家的变化;在战略模式中,战略的行动不会导致战略的变化。换句话说,国家的变化在于国家本身;战略变化取决于外部条件。