用于像产品这样的抽象的有限状态机 (FSM)

Finite State Machine (FSM) for an abstract like Product

我了解一个对象一次只能有一个有限状态。电话有几种不同的状态,如响铃、保持、通话等...闹钟有响铃、不响等状态...

我正在查看一个 抽象 class,例如 Product,它可以具有不同的状态,例如 sellable/non-sellable、taxable/non-taxable, tangible/in-tangible。当 产品 的这些状态中的任何一个发生变化时,都会触发系统中的某些行为。

我是否应该将通用 class 的 statuses 视为 states?一个 Product 是否可以保持不同的状态并且仍然可以被视为 FSM?

我相信这里没有唯一的正确答案。但我会说这取决于。如果您想将整个 Product 视为单个 FSM,那么您的状态将是所有属性的总和。例如可出售的、应税的、有形的……在某一时刻它可能是可出售的、应税的和有形的。如果有形变成无形,那么它就可以出售、纳税和无形了。

另一方面,如果您从特定功能的角度来看您的产品,您可能会取其中的一个子集来代表产品。因此,销售职能可能只考虑可销售状态。税务职能可能只是考虑征税。

无论如何,就像我说的,我认为取决于。关于 FSM 的用例以及您想完成的任何事情。最后它只是一些术语,除非你需要 FSM 来做一些特殊的事情..