目录

代码示例

<?php

/**
 * Description of InterpreterDemo
 * 解释器模式
 * @author jm
 */
class InterpreterDemo
{
    //put your code here
    public static function main()
    {


        $context = new Context();
        $syntax = [];
        array_push($syntax, new TerminalExpression());
        array_push($syntax, new NonTerminalExpression());
        array_push($syntax, new TerminalExpression());
        array_push($syntax, new TerminalExpression());

        foreach ($syntax as $value) {
            $value->interpret($context);
        }        
        
    }
}

interface AbstractExpression
{
    public function interpret(Context $context);
}

class TerminalExpression implements AbstractExpression
{
    public function interpret(Context $context)
    {
        echo "终端解释器\n";
    }
}

class NonTerminalExpression implements AbstractExpression
{
    public function interpret(Context $context)
    {
        echo "非终端解释器\n";
    }
}

class Context
{
    private $input;
    public function setInput($input)
    {
        $this->input = $input;
    }

    public function getInput()
    {
        return $this->input;
    }

    private $output;
    public function setOutput($output)
    {
        $this->output = $output;
    }

    public function getOutput()
    {
        return $this->output;
    }
}


InterpreterDemo::main();

输出

终端解释器
非终端解释器
终端解释器
终端解释器

小结

解释器模式一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。

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


本文部分收藏来自互联网,仅用于学习研究,著作权归原作者所有,如有侵权请联系删除

markdown @TsingChan