PHP设计模式系列(二十二):解释器模式
2017-05-01 21:12
791 查看
解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。模式结构
AbstractExpression:抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。TerminalExpression:终结符表达式。实现与文法中的终结符相关的解释操作。实现抽象表达式中所要求的方法。文法中每一个终结符都有一个具体的终结表达式与之相对应。
NonterminalExpression:非终结符表达式。为文法中的非终结符相关的解释操作。
Context: 环境类。包含解释器之外的一些全局信息。
结构图
PHP代码实现
<?php /** * 解释器模式 */ //AbstractExpression:抽象表达式 abstract class AbstractExpression { abstract public function Interpret($context); } //TerminalExpression:终结符表达式 class TerminalExpression extends AbstractExpression { public function Interpret($context) { var_dump('终端解释器'); } } //NonterminalExpression:非终结符表达式 class NonterminalExpression extends AbstractExpression { public function Interpret($context) { var_dump('非终端解释器'); } } //Context: 环境类 class Context { public function __set($name, $value) { $this->$name=$value; } public function __get($name) { return $this->$name; } } $context=new Context(); $lists[]=new TerminalExpression(); $lists[]=new NonterminalExpression(); $lists[]=new TerminalExpression(); $lists[]=new NonterminalExpression(); foreach ($lists as $value){ $value->Interpret($context); }
运行结果
string '终端解释器' (length=15) string '非终端解释器' (length=18) string '终端解释器' (length=15) string '非终端解释器' (length=18)
相关文章推荐
- PHP设计模式系列 - 解释器模式
- PHP设计模式系列 - 解释器模式
- PHP设计模式系列 - 解释器模式
- PHP设计模式系列 - 解释器模式
- 极速理解设计模式系列:24.解释器模式(Interpreter Pattern)
- PHP设计模式系列 - 单例
- PHP设计模式-工厂系列(三)-抽象工厂模式
- Java设计模式菜鸟系列(二十二)中介者模式建模与实现
- PHP设计模式-工厂系列(二)-工厂方法模式
- PHP设计模式漫谈之解释器模式
- PHP设计模式漫谈之解释器模式
- PHP设计模式之解释器模式的深入解析
- Java设计模式菜鸟系列(二十)解释器模式建模与实现
- PHP设计模式系列 - 适配器
- PHP设计模式系列 - 外观模式
- PHP设计模式系列 - 观察者模式处理订单(异步操作附加功能)
- 极速理解设计模式系列:24.解释器模式(Interpreter Pattern)
- PHP设计模式系列 - 委托模式
- PHP设计模式系列 - 观察者模式
- PHP设计模式-工厂系列(三)-抽象工厂模式