/**
* 解释器 示例
*
* @create_date: 2010-01-04
*/
interface IExpression{
public function interpreter($str);
}
class ExpressionNum implements IExpression
{
public function interpreter($str)
{
switch($str)
{
case "0": return "零";
case "1": return "一";
case "2": return "二";
case "3": return "三";
case "4": return "四";
case "5": return "五";
case "6": return "六";
case "7": return "七";
case "8": return "八";
case "9": return "九";
}
}
}
class ExpressionCharater implements IExpression
{
public function interpreter($str)
{
return strtoupper($str);
}
}
class Interpreter
{
static public function execute($string)
{
$expression = null;
for($i = 0;$i
$temp = $string[$i];
switch(true)
{
case is_numeric($temp): $expression = new ExpressionNum(); break;
default: $expression = new ExpressionCharater();
}
return $expression->interpreter($temp);
}
}
}
echo Interpreter :: execute("12345abc");
?>
解释器模式:用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作。
常用在框架的模版引擎。
通俗理解:把算法封装,根据不通的数据类型,调用不通的算法(解析动作),数据判断在调用类里面集成。