我想使用状态设计模式重新设计代码。这些州属于特定的对象。
示例:
A类可以有三种状态:st1,st2,st3。
同样,另一个类B可以有两种状态:st4,st5。
有一种情况,C类有一种状态:st1和st4以及st5。
基本上,这些状态在复杂对象的情况下应该是可互换的。
此外,这些类A,B和C包含将由各州使用的特定数据。
我的问题是:状态机应该如何设计?每个班级都应该有个人SM吗?所有州都可以有共同的基础接口吗?
请帮帮我;如果您需要更多信息,可以向我提出更多问题。
答案 0 :(得分:1)
我的问题应该如何处理 机器设计,如果有的话 每个班级的个人SM?
如果我理解你的描述,答案是“是”,每个对象都需要自己的状态机。
所有州都可以拥有共同基础 界面?
通用接口意味着具有多个实现的通用API。每个州有哪些常用方法,以及各州的实施方式有何不同?
如果没有不同的行为,您可能不需要为每个州提供课程。您可能只有一个State类和一个FSM来管理一组State和管理转换的规则。
答案 1 :(得分:0)
在我简陋的经历中,状态设计模式在某种程度上难以使用,因为它往往会产生大量的样板代码。我通常更喜欢问题的标准函数指针方法。如果您的对象/状态不是太大/太复杂,这是一种更简单的方法。
MY2C