类型管理者

前言

罐头还在开发所谓的工作流系统,遇到一个关于状态管理的问题。这里记录一下问题描述和优化方案。

问题描述

在你的系统不免需要维护很多key-value的状态值,比如:

1
2
3
4
5
6
7
8
9
10
11
12
//任务的类型
$task_catetype = array(
0=>"新增",
1=>"优化",
2=>"修复",
);
//用户的状态
$user_state = array(
0=>"在职",
1=>"离职",
);

维护这种数据结构无非两种途径:

  1. 建立一个专门维护状态数组的类(option.class.php),在类里面定义一些静态变量来维护这些状态数组。
  2. 建立独立的数据表存储类型数组,由于状态值的定义各不相同。一般是一张主表对于一张状态值的表。
    前者缺点不利于状态值的增删改,后者需要维护的数据表过多。
解决方案

关键:所有状态值存放在一张表,通过model层提供状态值数组。

思路:根据面向对象的思想,我们可以为系统抽象出一个状态管理者。这个状态管理负责维护系统所有状态数组(包含增删改)

步骤

  1. 设计通用的状态表,这里命名为type_manger
id name relate_table relate_filed sort deleted
状态key 状态名 关联表 关联字段 排序 删除
罐头很懒 (⊙v⊙)<br><br>工作日日常 :<br>do {<br>&nbsp;&nbsp;打代码<br>} while ( 发呆 || 吃饭 )<br><br>周末日常 :<br>( 鱼罐头 || 午餐肉 || 炸鸡块 ) +<br>( 罐可乐 || 瓶啤酒 ) +<br>( 盒仔饭 || 艇仔粥 || 即食面 ) +<br>( 轻音乐 || 肥皂剧 || 热网综 ) +<br>( 水果糖 || 甜布丁 )