2012-05-08 139 views
3

我读通过这个link约状态模式。它看起来像策略模式吗?这两种模式之间的确切区别是什么?战略设计模式VS状态设计模式

+1

http://dofactory.com/Patterns/Patterns.aspx – MilkyWayJoe

+0

[Strategy Design pattern和State Design pattern之间的区别是什么?](http://stackoverflow.com/questions/1658192/what-是策略设计模式和状态设计模式之间的差异) – Thor

+0

我对这两种模式有了一个好主意。谢谢你的回答 – Krishna

回答

3

现状与对策之间的差别是在意向。通过策略,算法的选择相当稳定。随着状态的发生,“上下文”对象状态的改变使得它从它的“调色板”中选择策略对象。

http://sourcemaking.com/design_patterns/state

1

策略模式是非常相似的状态模式。 区别之一在于Context包含作为实例变量的状态并且可以有多个任务,其实现可以依赖于状态 ,而在策略模式策略中作为参数 传递给方法并且上下文对象没有任何变量来存储 它。

详细内容见Strategy design pattern in java example tutorial

+1

谢谢你的回答 – Krishna

+0

欢迎您;) – Nomade

0

我认为一个主要的区别是:

-In 国家模式,我们通过上下文本身作为参数传递给国家具体类的方法我们需要分配给上下文,它做两件事:首先它将自己分配给发送的上下文,其次,它执行它的角色。

-In 策略模式,当我们第一次创建它时,我们将策略传递给上下文,所以它仍然像整个程序一样,除非我们将同一变量分配给新的上下文(指针)内存使用“新”并为其分配新策略,过了一段时间垃圾收集器将使用其分配的策略消除旧的上下文。

更清楚地说,策略对于一个上下文是固定的,一旦分配它就不能改变,即使上下文没有策略设置器。但是对于状态,许多状态可以一个接一个地分配给相同的上下文,因为上下文具有状态的setter。

我希望它是有用的。

0

在一种状态模式中,通常状态的动作引起状态的变化;在战略模式中,战略的行动不会导致战略的改变。换句话说,国家的变化在于国家本身;战略转变在于外部条件。