使用州设计模式重新设计 - 怀疑

时间:2011-02-07 18:56:15

标签: design-patterns class-design

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

示例:

A类可以有三种状态:st1,st2,st3。

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

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

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

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

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

请帮帮我;如果您需要更多信息,可以向我提出更多问题。

2 个答案:

答案 0 :(得分:1)

  

我的问题应该如何处理   机器设计,如果有的话   每个班级的个人SM?

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

  

所有州都可以拥有共同基础   界面?

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

如果没有不同的行为,您可能不需要为每个州提供课程。您可能只有一个State类和一个FSM来管理一组State和管理转换的规则。

答案 1 :(得分:0)

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

MY2C