php 解释器模式,PHP设计模式 - 解释器模式

给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

角色:

环境角色(PlayContent):定义解释规则的全局信息。

抽象解释器(Empress):定义了部分解释具体实现,封装了一些由具体解释器实现的接口。

具体解释器(MusicNote):实现抽象解释器的接口,进行具体的解释执行。

class Expression { //抽象表示

function interpreter($str) {

return $str;

}

}

class ExpressionNum extends Expression { //表示数字

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 extends Expression { //表示字符

function interpreter($str) {

return strtoupper($str);

}

}

class Interpreter { //解释器

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();

}

echo $expression->interpreter($temp);

echo "
";

}

}

}

//client

$obj = new Interpreter();

$obj->execute("123s45abc");

/* 输出:

S

A

B

C */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值