Object 一个对象可以同时参与两个状态机吗?

Object 一个对象可以同时参与两个状态机吗?,object,state,Object,State,我正在编写一个面向对象的程序,其业务流程需要一个“ticket”对象。“ticket”对象有两种作用方式。这是要出售的股票,也是我们自己在出售或返还的基础上持有或承诺购买的股票 因此,销售过程中的票证可以处于“可用”或“已售出”状态(还有其他状态,但这些状态很重要)。票证作为一个国家,其SOR状态为“SOR”或“已购买” 理论上,“sor”票可能“可用”或“出售”,购买的票也可能“可用”或“出售”。这两组状态之间几乎没有直接关系。据推测,“售出”的票最终将成为“购买”的票,而“可用”的票将永远无

我正在编写一个面向对象的程序,其业务流程需要一个“ticket”对象。“ticket”对象有两种作用方式。这是要出售的股票,也是我们自己在出售或返还的基础上持有或承诺购买的股票

因此,销售过程中的票证可以处于“可用”或“已售出”状态(还有其他状态,但这些状态很重要)。票证作为一个国家,其SOR状态为“SOR”或“已购买”

理论上,“sor”票可能“可用”或“出售”,购买的票也可能“可用”或“出售”。这两组状态之间几乎没有直接关系。据推测,“售出”的票最终将成为“购买”的票,而“可用”的票将永远无法兑现。就这样

那么我用两个独立的状态来设计这个物体对吗?或者它应该只有一个包含上述所有内容的州吗?什么是最佳实践

另外:这是一个头颅破坏者,当我在机翼上等待一些帮助的时候,我回到了我的分析,这是另一个奇怪的层面。“票”的子对象称为“价格”。这说明一张票可以以一种价格卖给成年人,以另一种价格卖给儿童,以三分之一的价格卖给领取养老金的人

当车票处于“SOR”状态时(在车票级别上注明),但当车票进入“已购买”状态时(根据价格记录),因为车票可能有多个可能的价格,但当车票被支付时,它只在一个级别上被支付(这与场馆容量等相关)


类似地,当车票“可用”时,它有多种可能的价格,但它是相对于“价格”而“出售”的,因为这是客户决定购买的时候,例如,一张成人票、两张儿童票。某一特定活动的门票可以完全由成年人购买,或者大部分卖给儿童,显然通常介于两者之间,但与状态相关的信息发生在两个不同的对象中。这有区别吗?

如果州本身是真正独立的,那么在我看来

ticket:
   availability: available or sold
   sor: sor or purchased
它比单一的州要干净得多,我想它应该是这样的

ticket:
      available_&_sor
      available_&_purchased
      sold_&_sor
      sold_&_purchased
在第一种情况下,您将对象视为一个离散的可用性状态,以及一个离散的sor状态,这听起来像是它清晰地模拟了您的真实世界示例。在第二种情况下,您有一个对这两个值进行编码的人工状态


如果每个离散状态有更多类型,那么这两种状态之间的差异就会放大,并且突然开始有很多组合。

如果两个轴上的行为是独立的(特别是如果存在可想象的子类型或具有重叠行为的变体对象)票证保留两个状态对象并从单独状态对象的行为中构建其行为可能是有意义的