摘要:解釋器模式一解釋器模式定義給定一種語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子角色抽象表達式接口終結(jié)符表達式非終結(jié)符表達式上下文環(huán)境二具體實現(xiàn)創(chuàng)建抽象接口創(chuàng)建終結(jié)符表達式創(chuàng)建非終結(jié)符表達式調(diào)用輸出三
解釋器模式
一. 解釋器模式 1.1 定義給定一種語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子.
1.2 角色抽象表達式接口(IExpression).
終結(jié)符表達式(TerminalExpression).
非終結(jié)符表達式(NonterminalExpression).
上下文環(huán)境(Context).
二. 具體實現(xiàn) 1.1 創(chuàng)建抽象接口public interface IExpression { void interpreter(); }1.2 創(chuàng)建終結(jié)符表達式
public class TerminalExpression implements IExpression { @Override public void interpreter() { System.out.println("TerminalExpression interpreter ..."); } }1.3 創(chuàng)建非終結(jié)符表達式
public class NonterminalExpression implements IExpression { private TerminalExpression terminalExpressionA, terminalExpressionB; public NonterminalExpression(TerminalExpression terminalExpressionA, TerminalExpression terminalExpressionB){ this.terminalExpressionA = terminalExpressionA; this.terminalExpressionB = terminalExpressionB; } @Override public void interpreter() { terminalExpressionA.interpreter(); terminalExpressionB.interpreter(); System.out.println("interpreter terminalExpressionA AND terminalExpressionB ..."); } }1.4 調(diào)用
public static void main(String[] args) { TerminalExpression expressionA = new TerminalExpression(); TerminalExpression expressionB = new TerminalExpression(); IExpression expression = new NonterminalExpression(expressionA, expressionB); expression.interpreter(); }1.5 輸出
TerminalExpression interpreter ... TerminalExpression interpreter ... interpreter terminalExpressionA AND terminalExpressionB ...三. 優(yōu)缺點 3.1 優(yōu)點
靈活性強.
擴展性強.
3.2 缺點每個文法對應(yīng)一個表達式類,類泛濫.
復(fù)雜文法較難實現(xiàn).
四. 源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69624.html
摘要:該設(shè)計模式需要實現(xiàn)一個表達式接口,該接口將會被告知需要解釋的特定上下文。實現(xiàn)我們將創(chuàng)建一個接口并且創(chuàng)建實現(xiàn)它的具體類。聲明一個具體類,該類將作為主要的問題的內(nèi)柔解釋器。 原文地址譯者 smallclover希望對你們有所幫助 設(shè)計模式-解釋器模式 解釋器模式提供一種評估語言語法以及表達式的方式。這種類型的設(shè)計模式屬于行為型設(shè)計模式。該設(shè)計模式需要實現(xiàn)一個表達式接口,該接口將會被告知需要...
摘要:函數(shù)執(zhí)行函數(shù)執(zhí)行使用后續(xù)遍歷的方式來遍歷語法樹。對于每一個子節(jié)點,若其為函數(shù)則遞歸調(diào)用執(zhí)行函數(shù)。如果當(dāng)前方法是運算符方法,則調(diào)用該運算符的執(zhí)行函數(shù),并返回結(jié)果如果當(dāng)前方法是函數(shù),則解析所有形參的值后生產(chǎn)函數(shù)作用域,并以改作用域執(zhí)行當(dāng)前函數(shù)。 前言 昨晚奮斗了一下,終于把這題了解了。今天完善了一下代碼,把剩下的部分放上來。目前剩下的有兩個主要模塊即函數(shù)解析與函數(shù)執(zhí)行,以及兩個小模塊即運算...
摘要:酷睿代在年取代了奔騰,主頻遠(yuǎn)低于此。該詞被敏捷開發(fā)團隊使用較多,含義與形式會略有不同,更改已經(jīng)開始將垃圾收集器的狀態(tài)轉(zhuǎn)到解釋器,因此每個子解釋器將擁有它自己的本該如此。結(jié)論死亡了嗎對于單線程的應(yīng)用程序,仍然存活。showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09f554fdf443); 本文原創(chuàng)并首發(fā)于公眾號【Python貓】,未經(jīng)授...
摘要:酷睿代在年取代了奔騰,主頻遠(yuǎn)低于此。該詞被敏捷開發(fā)團隊使用較多,含義與形式會略有不同,更改已經(jīng)開始將垃圾收集器的狀態(tài)轉(zhuǎn)到解釋器,因此每個子解釋器將擁有它自己的本該如此。結(jié)論死亡了嗎對于單線程的應(yīng)用程序,仍然存活。showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09f554fdf443); 本文原創(chuàng)并首發(fā)于公眾號【Python貓】,未經(jīng)授...
閱讀 3451·2021-11-08 13:20
閱讀 3375·2021-09-30 09:48
閱讀 2579·2021-09-29 09:41
閱讀 600·2021-09-22 15:04
閱讀 2499·2021-08-23 09:44
閱讀 3689·2020-12-03 17:26
閱讀 1021·2019-08-30 14:10
閱讀 1575·2019-08-29 18:34