使用State Design模式的场景

时间:2014-02-04 09:22:28

标签: c# .net oop design-patterns

有人能指出一些国家设计模式被广泛使用的真实项目场景吗?国家设计模式和战略设计模式之间的主要区别是什么?

1 个答案:

答案 0 :(得分:5)

  

有人能指出一些国家设计的真实项目场景   模式被广泛使用?

如果你有state machine,并且你不想处理根据它的状态定义类的行为的switch语句,那么在State对象中封装不同的行为是一个不错的选择。但我不能说这种模式被广泛使用。

  

也是国家设计模式与战略的主要区别   设计模式?

这些模式看起来很相似,但存在很大差异 - 策略客户了解可能的策略,通常客户有责任向课程提供/更改策略实施。使用State客户端不应该知道对象的当前状态,以及可能的状态。这完全是在状态之间切换的内部部分,具体取决于状态中定义的条件(状态转换已明确定义)。

此外,意图存在很大差异 - 对于状态,您希望上下文动态地更改状态(即状态之间的切换)。使用策略,您可以在运行时更改算法实现,但通常您使用适当的策略组合上下文(即使用某些行为对参数化对象)并保持不变。策略更多是关于在不同类之间共享行为。国家是为一个特定的背景而创建的。