2011-02-07 59 views
1

我想使用状态设计模式重新设计代码。这些州属于特定的对象。使用状态设计模式重新设计 - 疑问

实施例:

A类可以具有三种状态:ST1,ST2,ST3。

同样,另一个类B可以有2个状态:st4,st5。

有一种情况,C类有一个状态:st1和st4和st5。

基本上这些状态在复杂对象的情况下应该是可以互换的。

此外,这些类A,B和C包含特定于它们的数据,这些数据将由州使用。

我的问题是:应如何设计状态机?每个班级是否应该有单独的SM?所有的州可以有一个共同的基础接口?

请帮我一把;如果你需要更多的信息,你可以问我更多的问题。

回答

1

我的问题应该怎么状态 机的设计,应该有 个人SM为每类?

如果我理解你的描述,答案是肯定的,每个对象都需要自己的状态机。

所有州可以有一个共同的基地 接口?

通用接口意味着通用API与多个实现。每个州有哪些常见方法,以及各州的实施方式有何不同?

如果没有不同的行为,您可能不需要每个州的类。你可能只有一个国家班级和一个FSM来管理国家集合和管理转换的规则。

0

在我卑微的经历中,状态设计模式在某种程度上难以使用,因为它往往会生成大量的样板代码。我通常更喜欢问题的标准函数指针方法。如果你的对象/状态不是太大/太复杂,这是一个更简单的方法。

MY2C

+0

我认为你是正确的,如果对象很小,状态不是太多,但我认为在我的情况下,我想有一个可扩展的设计。由于使用函数指针似乎是一个直接的解决方案另外我觉得它需要一些额外的努力在维护 – wthomas 2011-02-08 10:03:04

+0

@wthomas:魔鬼是在细节:)祝你好运与你的代码! – neuro 2011-02-08 18:37:04