跟踪/状态的设计模式

时间:2011-01-14 00:37:29

标签: design-patterns tracking status

问题跟踪器之类的最接近的设计模式是什么?

您的对象可以是各种状态之一:openclosedin production

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

我的初始建模看起来有点像这样:

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

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

可以对操作进行分组并将组分配给状态。与您可以说的大多数权限模型类似。

只是在寻找关于最常用的模式的输入,所以我可以进一步研究它。谢谢!

2 个答案:

答案 0 :(得分:3)

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

如果两种状态都是可能的,可以考虑更改Status对象并将Transition(或者可能替换Action?)对象添加到类层次结构中:

class Status 
    - transitions (Transition[])

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

此处状态知道哪些转换是可能的(例如“打开”可以转换为“关闭”或“生产中”)。这样,您将FSM表示为directed graph。另外,根据我自己的经验,让一个实体知道它来自哪里,从而删除prior_status通常并不重要。而是可以通过审计日志记录/数据库表捕获历史记录捕获路径。

答案 1 :(得分:0)

我在考虑State + Command

的组合