給定一個語言, 定義它的文法的一種表示,並定義一個解釋器,該解釋器使用該表示來解釋語言中的句子。
角色:
環境角色(PlayContent):定義解釋規則的全局信息。
抽象解釋器(Empress):定義了部分解釋具體實現,封裝了一些由具體解釋器實現的接口。
具體解釋器(MusicNote):實現抽象解釋器的接口,進行具體的解釋執行。php
<?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"); /* 輸出: 一 二 三 S 四 五 A B C */