1
2
这绝对是一个合理的做法,如果您的状态成倍增加(就像状态机倾向于这样),这可能会变得有点难以维护,但实际上这是一个非常好的OO风格的状态机实现。
对于扩展,您可能还想“命名”您的状态并将它们放入哈希表中,一旦它扩展(记住,在编程中您有1个或多个)添加新的状态不会对您的状态机进行代码更改--但我假设您已经有了类似的东西,并且只是针对这个问题缩小了它。 还要注意,要切换不希望直接执行的状态(如示例所示),可能需要一个方法(setState)在perform方法返回时更改状态,而不是在perform方法本身中或在其运行时更改状态。实际上,您可以让perform返回一个字符串,指示它的下一个所需状态。。 根据评论编辑: 我给你们的州命名的意思是:
你可能会有这样的想法(请原谅我的java语法,C不是我的主要语言,但我知道它在功能上非常相似)
您的呼叫代码将执行以下操作:
我忽略了很多初始化和错误检查。 您的状态机当前只有一个事件:“Perform()”。您可能会发现您需要其他事件,这些事件会使事情稍微复杂一些(在java中,我可能会使用反射或注释来解决这个问题,不确定C#将如何做到这一点)。 |
john4ster · 对父级不更改状态的响应回调 2 年前 |
Dylan L. · 为什么更新的状态没有返回到我的组件? 2 年前 |
kuk · 如何在React中回调后动态更改状态的对象值? 2 年前 |
Tú Nguyá» n · 更新状态时,我的输入没有更新值 2 年前 |