代码之家  ›  专栏  ›  技术社区  ›  user77115

当状态依赖于函数时,如何建模statemachine?

uml
  •  1
  • user77115  · 技术社区  · 15 年前

    我有合同课。本合同有效期为2010年1月1日至2010年12月31日。

    它可以处于主动或被动状态,这取决于我向实例请求其状态的日期。 例如,如果我问2010年7月4日,它处于主动状态,但如果我问2011年1月1日,它处于被动状态。

    状态机图:

    从开始状态,它应该转到下一个状态? 我在想一个伪状态“default”,它有一个入口函数决定下一个状态,然后是一个具有主动和被动的子状态机,然后是一个删除时的结束状态。

    但对于这样一个小问题来说,这似乎很复杂。

    你会怎么做?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Gabriel Ščerbák    15 年前

    嗯,你要么按照你描述的那样做,这样当有人试图使用联系人而没有previous date事件时,合同将处于无效(开始/结束)状态,要么你可以尝试在构造函数中添加对该函数的调用,这样你的合同就立即处于正确的状态。可能还有其他的解决方案,但是您应该考虑合同中可能发生的事件(消息/方法调用)比日期还多。有些可能也会影响球场。顺便说一句,当你不嵌入状态机而只将开始和结束连接到主动和被动状态时,你的解决方案就不会那么复杂了。