大B:“來舉一個加減乘除的例子吧,實現思路來自於《java與模式》中的例子。每個角色的功能按照上麵提到的規範來實現。”
//上下文(環境)角色,使用HashMap來存儲變量對應的數值
//抽象表達式角色,也可以用接口來實現
//終結符表達式角色
//非終結符表達式角色
(“被除數為0!”);
//測試程序,計算()/(a-b+2)
//設置變量、常量
//為變量賦值
//運算,對句子的結構由我們自己來分析,構造
大B:“解釋器模式並沒有說明如何創建一個抽象語法樹,因此它的實現可以多種多樣,在上麵我們是直接在Test中提供的,當然還有更好、更專業的實現方式。對於終結符,建議采用享元模式來共享它們的拷貝,因為它們要多次重複出現。但是考慮到享元模式的使用局限性,建議還是當你的係統中終結符重複的足夠多的時候再考慮享元模式。”
(本章完)