先从一个常见的问题入手,在页面中显示今天的星期,如果还用下面的方式,那就需要好好看看本文章了
编程人员一般采用下面的方式,将星期组织成一个数组(可以称作表),安卓索引取出对应的汉字。
这就是表驱动,在大家的编程生涯中或多或少都接触过,只是没有提出来总结一下,现在是不是觉得自己的实现方式很高大上了。
表驱动法是一种编程模式,从表里面查找信息而不是使用逻辑语句(if…else…switch)。
上面只是一维表驱动,下面扩展正多维,先看一个二维的例子,这也是表驱动经典的例子了。
《星际穿越》(原来例子不是这样描述滴)中人类生产食物的总和有限,不得不根据对象的特点进行食物的分配,规则如下
18岁以下男可以领取100斤食物
18-60岁男可以领取120斤食物
60岁以上男可以领取100斤食物
18岁以下女可以领取90斤食物
18-60岁女可以领取110斤食物
60岁以上女可以领取95斤食物
[b]if....else...方式
[/b]
[b]表驱动方式,第一维度为年龄,第二维度为性别[/b]
表驱动方式是不是使代码能够使代码简单、明了,便于维护。
忽然有一天开始加入身材胖、正常、瘦因子进行食物分发,就是如下的规则
18岁以下男胖子可以领取100斤食物
18岁以下男瘦子可以领取100斤食物
........
那就是三维表驱动啦。
$result = '';
switch (date('w')){
case 0:
$result ='星期日';break;
case 1:
$result ='星期一';break;
case 2:
$result ='星期二';break;
case 3:
$result ='星期三';break;
case 4:
$result ='星期四';break;
case 5:
$result ='星期五';break;
default:
$result ='星期六';
}
return $result;
编程人员一般采用下面的方式,将星期组织成一个数组(可以称作表),安卓索引取出对应的汉字。
$map= array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
return $map[date('w')];
这就是表驱动,在大家的编程生涯中或多或少都接触过,只是没有提出来总结一下,现在是不是觉得自己的实现方式很高大上了。
表驱动法是一种编程模式,从表里面查找信息而不是使用逻辑语句(if…else…switch)。
上面只是一维表驱动,下面扩展正多维,先看一个二维的例子,这也是表驱动经典的例子了。
《星际穿越》(原来例子不是这样描述滴)中人类生产食物的总和有限,不得不根据对象的特点进行食物的分配,规则如下
18岁以下男可以领取100斤食物
18-60岁男可以领取120斤食物
60岁以上男可以领取100斤食物
18岁以下女可以领取90斤食物
18-60岁女可以领取110斤食物
60岁以上女可以领取95斤食物
[b]if....else...方式
[/b]
function getFoodWeight($age, $gender)
{
if ($age < 18) {
if ($gender) {
$food = 100;
} else {
$food = 90;
}
} else if ($age > 60) {
if ($gender) {
$food = 100;
} else {
$food = 95;
}
} else {
if ($gender) {
$food = 120;
} else {
$food = 110;
}
}
return $food;
}
[b]表驱动方式,第一维度为年龄,第二维度为性别[/b]
$config = array(
array(90, 100),
array(110, 120),
array(95, 100),
);
function getFoodWeight($age, $gender)
{
global $config;
$ageDimension = ($age - 18 > 0) + ($age - 60 > 0);
$genderDimension = $gender;
return $config[$ageDimension][$genderDimension];
}
表驱动方式是不是使代码能够使代码简单、明了,便于维护。
忽然有一天开始加入身材胖、正常、瘦因子进行食物分发,就是如下的规则
18岁以下男胖子可以领取100斤食物
18岁以下男瘦子可以领取100斤食物
........
那就是三维表驱动啦。