2011-01-14 95 views
2

什么是最接近的问题跟踪器的设计模式?跟踪/状态的设计模式

您有一个对象可以是各种状态之一:open,closed,in production

可以根据当前状态执行操作。

我最初的造型看起来有点像这样:

class Status 
    - next_status (None or Status) 
    - previous_status (None or Status) 
    - actions (set of Actions) 

class Action 
    - name (string) 
    - description (string) 

随着分组动作,并指定该组的状态的可能性。与大多数权限模型类似,您可以说。

只是在寻找什么样的模式,这最紧随其后,所以我可以研究一些更多的输入。谢谢!

回答

3

您代表的是finite state machine(FSM)的组合,真正的流程图,但你的类的设计看起来像一个doubly-linked list。如果状态确定先前和下一个状态是可行的,但在大多数系统中这是不真实的。在你的例子中考虑一个“开放”的状态,下一个可能是“关闭”还是“正在生产”?

如果二者的状态是可能考虑改变现状对象,并添加过渡(或者替换操作?)对象的类层次结构:

class Status 
    - transitions (Transition[]) 

class Transition 
    - from (Status) 
    - to (Status) 

这里状态知道什么转变是可能的(例如,“开“可能会过渡到”关闭“或”正在生产“)。通过这种方式,您将FSM表示为directed graph。另外,根据我自己的经验,让一个实体知道它刚刚从哪里来,通常并不重要,因此删除了prior_status。相反,可以通过审计记录/数据库表捕获历史来捕获路径。

+0

这看起来像我想要的。我已经记录过渡,这给了我正确的洞察力,如何建立在这个基础上。谢谢! – 2011-01-14 19:04:43