我在普通状态机中使用状态模式。我希望能够从 [ A -> B ]、[ B -> C ] 和 [ A -> C ] 出发。现在我们的域有一个新规则,现在我也需要从 [C -> A] 出发,但前提是我以前从未去过 B。所以我们有带有记忆的状态。有两种可能的解决方案:
- 创建一个新的状态CB意味着C 在 B 之后,并具有这些规则 [ A -> B ]、[ B -> CB ]、[ A -> C ]、[ C -> A ]
- 使用我们的 Context 有一个包含先前状态的列表(我们称之为 StateHistoric)和进行转换的日期(状态历史也是我们客户的域要求)的事实,然后使用这些规则 [ A -> B ]、[ B -> C ]、[ A -> C ]、[ C -> A如果B不在 Context.StateHistoric 中]。
两者中哪一个是为状态模式使用内存的更正确方法?(或这两个的另一种选择)
谢谢