PHP設計模式(二十二)—直譯器模式(Interpreter Patt
直譯器模式(Interpreter Pattern): 提供了評估語言的語法或表示式的方式,它屬於行為型模式。這種模式實現了一個表示式介面,該介面解釋一個特定的上下文。這種模式被用在 SQL 解析、符號處理引擎等
(一)為什麼需要直譯器模式
可以將一個需要解釋執行的語言中的句子表示為一個抽象語法樹
(二)直譯器模式UML圖
(三)簡單例項
直譯器模式是開發中最少使用的,因為我們親自編寫語法解析的時候總是非常非常少。而且我能想到的直譯器模式例子,幾乎都是程式碼繁多到我自己怕。所以這裡我只給出直譯器模式的UML圖通用程式碼,感興趣的話可以自己去實現
抽象表示式
abstract class Expression{
//任何表示式子類都應該有一種解析任務
abstract public function interpreter($context);
}
//抽象表示式是生成語法集合(語法樹)的關鍵,每個語法集合完成指定語法解析任務
//抽象表示式透過遞迴呼叫的方法,最終由最小語法單元進行解析完成
//終結符表示式 通常指運算變數
class TerminalExpression extends Expression{
//終結符表示式通常只有一個
public function interpreter($context){
return null; //視具體業務實現
}
}
//非終結符表示式 通常指運算的符號
class NonterminalExpression extends Expression{
public function interpreter($context){
return null;
}
}
<code>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2798765/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 直譯器模式(Interpreter)模式
- Rust語言之GoF設計模式: 直譯器Interpreter模式RustGo設計模式
- 設計模式之直譯器模式設計模式
- 設計模式學習筆記(二十二)直譯器模式及其實現設計模式筆記
- 簡說設計模式——直譯器模式設計模式
- 極簡設計模式-直譯器模式設計模式
- 設計模式--直譯器模式和狀態模式設計模式
- 設計模式(十五)直譯器設計模式
- 23種設計模式之直譯器模式設計模式
- 折騰Java設計模式之直譯器模式Java設計模式
- 20.java設計模式之直譯器模式Java設計模式
- 軟體設計模式系列之十七——直譯器模式設計模式
- 直譯器設計模式知識概括設計模式
- 設計模式 第十章 備忘錄模式、直譯器模式、狀態模式設計模式
- Java設計模式-17、直譯器模式-自定義語言的實現Java設計模式
- PHP設計模式- Decorator 裝飾器模式PHP設計模式
- 24_直譯器模式模式
- 設計模式(二十一)——直譯器模式(Spring 框架中SpelExpressionParser原始碼分析)設計模式Spring框架Express原始碼
- PHP設計模式之裝飾器模式(Decorator)PHP設計模式
- PHP設計模式-代理模式PHP設計模式
- php設計模式PHP設計模式
- PHP 設計模式PHP設計模式
- PHP設計模式(3)—— 策略模式PHP設計模式
- PHP設計模式-- 單列模式PHP設計模式
- PHP設計模式-- 工廠模式PHP設計模式
- PHP 設計模式之策略模式PHP設計模式
- PHP 設計模式之流介面模式PHP設計模式
- PHP設計模式之外觀模式PHP設計模式
- 軟體設計模式系列之二十二——狀態模式設計模式
- 軟體設計模式學習(二十二)備忘錄模式設計模式
- PHP設計模式-觀察者模式PHP設計模式
- PHP 設計模式之——單例模式PHP設計模式單例
- PHP設計模式 - 註冊樹模式PHP設計模式
- PHP 設計模式之狀態模式PHP設計模式
- PHP 設計模式之單例模式PHP設計模式單例
- PHP 設計模式之組合模式PHP設計模式
- PHP設計模式之模板方法模式PHP設計模式
- php設計模式之註冊模式PHP設計模式