解释器模式(Interpreter)

模式架构简单代码实现示例:

<?php
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<strlen($string);$i++) { 
            $temp = $string[$i]; 
            switch(true) { 
                case is_numeric($temp): $expression = new ExpressionNum(); break; 
                default: $expression = new ExpressionCharater(); 
            } 
            echo $expression->interpreter($temp);
            echo "<br>"; 
        } 
    } 
} 
//client
$obj = new Interpreter(); 
$obj->execute("123s45abc");

Last updated