我在正常状态机中使用状态模式。我希望能够从[A→B],[B→C]和[A→C]。 现在我们的域名有了新的规则,现在我需要从[C - > A]也去,但只有如果我从来没有在B之前。 所以我们有状态与内存。有两个可能的解决方案:状态模式与内存
- 创建乙后,一个新的国家CB至极意味着C,并有这些规则[甲 - >乙],[乙 - > CB],[ A - >ç],[ç - >一个]
- 使用的事实,我们的环境已经与以前的状态的列表(可以称之为StateHistoric),当跃迁的日期(国家历史也是我们客户的领域要求),然后使用这些规则[A - >乙],[乙 - “ç],[A - >Ç],[Ç - >甲如果B不在Context.StateHistoric]。
这两者中哪一个是使用状态模式更正确的方式? (或另一种替代这些2)
由于
如果条件变得更复杂,例如,如果现在我可以从C-> A去,只有当我从未去过B TWICE时,那么如果我选择了解决方案编号1,所需状态的数量会增加,所以它不是一个可行的解决方案,解决方案二会更容易适应,因为我只需要计算历史中B的数量。所以为了灵活性,我更倾向于选择解决方案2。 – 2010-01-17 22:10:40