前言
罐头
还在开发所谓的工作流系统
,遇到一个关于状态管理的问题。这里记录一下问题描述和优化方案。
问题描述
在你的系统不免需要维护很多key-value的状态值,比如:
|
|
维护这种数据结构无非两种途径:
- 建立一个专门维护状态数组的类(option.class.php),在类里面定义一些静态变量来维护这些状态数组。
- 建立独立的数据表存储类型数组,由于状态值的定义各不相同。一般是一张主表对于一张状态值的表。
前者缺点不利于状态值的增删改,后者需要维护的数据表过多。
解决方案
关键:所有状态值存放在一张表,通过model层提供状态值数组。
思路:根据面向对象的思想,我们可以为系统抽象出一个状态管理者
。这个状态管理负责维护系统所有状态数组(包含增删改)
步骤
- 设计通用的状态表,这里命名为
type_manger
。
id | name | relate_table | relate_filed | sort | deleted |
---|---|---|---|---|---|
状态key | 状态名 | 关联表 | 关联字段 | 排序 | 删除 |