问题跟踪器之类的最接近的设计模式是什么?
您的对象可以是各种状态之一: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)
可以对操作进行分组并将组分配给状态。与您可以说的大多数权限模型类似。
只是在寻找关于最常用的模式的输入,所以我可以进一步研究它。谢谢!
答案 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)