多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > 解釋器模式(Interpreter)Java

解釋器模式(Interpreter)Java

來源:程序員人生   發(fā)布時間:2016-06-24 08:52:06 閱讀次數(shù):2808次


定義:

解釋器模式(interpreter):給定1個語言,定義它的文法的1種表示,并定義1個解釋器,這個解釋器使用該表示來解釋語言中的句子。



結(jié)構(gòu)圖:





AbstractExpression解釋器模式抽象類

package ding.study.designpatterns.interpreter; /** * 解釋器模式抽象類 * - 聲明1個抽象的Interpret方法,抽象語法樹中所有的節(jié)點都必須實現(xiàn)該抽象方法。 * @author daniel * */ abstract class AbstractExpression { //解釋方法 public abstract void interpret(Context context); }


Context解釋器以外的1些全局信息

package ding.study.designpatterns.interpreter; /** * 解釋器以外的1些全局信息 * Interpreter方法所需要的信息的容器,該信息對Interpreter而言全局可見。充當(dāng)幾個AbstractExpresssion * 實例之間的通訊頻道。 * * @author daniel * */ public class Context { private String input; private String output; /** * @return the output */ public String getOutput() { return output; } /** * @param output * the output to set */ public void setOutput(String output) { this.output = output; } /** * @return the input */ public String getInput() { return input; } /** * @param input * the input to set */ public void setInput(String input) { this.input = input; } }


NonterminalExpression非終端解釋器

package ding.study.designpatterns.interpreter; /** * 非終端解釋器 另外1個實現(xiàn)了AbstractExpression * 接口的類,用來處理語法樹中非末端節(jié)點的語法。它含有下1個AbstractExpression(s)的援用,調(diào)用它每一個子節(jié)點的Interpret方法。 * * @author daniel * */ public class NonterminalExpression extends AbstractExpression { @Override public void interpret(Context context) { System.out.println("非終端解釋器"); } }


TerminalExpression終端解釋器

package ding.study.designpatterns.interpreter; /** * 終端解釋器 * - 實現(xiàn)和語法中末端符號相干的Interpret方法。 - 在每一個句子的末端符號中均需要1個TerminalExpression實例。 * @author daniel * */ public class TerminalExpression extends AbstractExpression { @Override public void interpret(Context context) { System.out.println("終端解釋器"); } }



Client  客戶端 ZTestMain

package ding.study.designpatterns.interpreter; import java.util.ArrayList; import java.util.List; /** * 解釋器模式(interpreter):給定1個語言,定義它的文法的1種表示,并定義1個解釋器,這個解釋器使用該表示來解釋語言中的句子。 * * 輸出: * 終端解釋器 非終端解釋器 終端解釋器 終端解釋器 * * @author daniel * @email 576699909@qq.com * @time 2016⑸⑶1 下午2:16:37 */ public class ZTestMain { /** * @param args */ public static void main(String[] args) { Context context = new Context(); List<AbstractExpression> list = new ArrayList<AbstractExpression>(); list.add(new TerminalExpression()); list.add(new NonterminalExpression()); list.add(new TerminalExpression()); list.add(new TerminalExpression()); for (AbstractExpression exp : list) { exp.interpret(context); } } }



履行結(jié)果




源代碼

https://github.com/dingsai88/StudyTest/tree/master/src/ding/study/designpatterns/interpreter





生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲最新永久观看在线 | 国产精品自在线拍国产 | 97综合| 92看片淫黄大片看国产片 | 婷婷在线视频国产综合 | 黄大色黄美女精品大毛片 | 欧美三级在线观看视频 | 亚洲麻豆视频 | 亚洲制服一区 | 国产成人精品综合久久久 | 亚洲色图欧美一区 | free性欧美tube视频 | 亚洲另类视频在线观看 | 高清一级做a爱免费视 | 91福利国产在线观看香蕉 | 国产成人精品日本亚洲语音1 | 亚洲国产福利精品一区二区 | 一级做a爰片久久毛片潮喷 一级做a爰片久久毛片看看 | 黄 色 免 费 网站在线观看 | 亚洲欧美色视频 | 美女毛片免费 | free性欧美人与牛 | 欧美久久久久久久一区二区三区 | 久久一区二区三区99 | 美国一级淫片 | 亚洲精品欧美精品中文字幕 | 亚洲欧美日韩国产 | 日本一视频一区视频二区 | 在线亚洲一区二区 | 手机看片福利日韩国产 | 亚洲性色视频 | 在线观看亚洲免费 | 乱老女人一二区视频 | 亚洲成人在线网 | 国产国语videosex| 亚洲精品性夜夜夜 | 激情另类国内一区二区视频 | 一区二区三区四区国产精品 | 亚洲免费网站观看视频 | 欧美人与z0z0xxxx | 香蕉伊|