国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

行為型模式-解釋器模式

這篇具有很好參考價(jià)值的文章主要介紹了行為型模式-解釋器模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

提供了評(píng)估語(yǔ)言的語(yǔ)法或表達(dá)式的方式,它屬于行為型模式。這種模式實(shí)現(xiàn)了一個(gè)表達(dá)式接口,該接口解釋一個(gè)特定的上下文。這種模式被用在 SQL 解析、符號(hào)處理引擎等。

意圖:給定一個(gè)語(yǔ)言,定義它的文法表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該標(biāo)識(shí)來(lái)解釋語(yǔ)言中的句子。

主要解決:對(duì)于一些固定文法構(gòu)建一個(gè)解釋句子的解釋器。

何時(shí)使用:如果一種特定類(lèi)型的問(wèn)題發(fā)生的頻率足夠高,那么可能就值得將該問(wèn)題的各個(gè)實(shí)例表述為一個(gè)簡(jiǎn)單語(yǔ)言中的句子。這樣就可以構(gòu)建一個(gè)解釋器,該解釋器通過(guò)解釋這些句子來(lái)解決該問(wèn)題。

如何解決:構(gòu)建語(yǔ)法樹(shù),定義終結(jié)符與非終結(jié)符。

關(guān)鍵代碼:構(gòu)建環(huán)境類(lèi),包含解釋器之外的一些全局信息,一般是 HashMap。

應(yīng)用實(shí)例:編譯器、運(yùn)算表達(dá)式計(jì)算。

優(yōu)點(diǎn):?1、可擴(kuò)展性比較好,靈活。 2、增加了新的解釋表達(dá)式的方式。 3、易于實(shí)現(xiàn)簡(jiǎn)單文法。

缺點(diǎn):?1、可利用場(chǎng)景比較少。 2、對(duì)于復(fù)雜的文法比較難維護(hù)。 3、解釋器模式會(huì)引起類(lèi)膨脹。 4、解釋器模式采用遞歸調(diào)用方法。

使用場(chǎng)景:?1、可以將一個(gè)需要解釋執(zhí)行的語(yǔ)言中的句子表示為一個(gè)抽象語(yǔ)法樹(shù)。 2、一些重復(fù)出現(xiàn)的問(wèn)題可以用一種簡(jiǎn)單的語(yǔ)言來(lái)進(jìn)行表達(dá)。 3、一個(gè)簡(jiǎn)單語(yǔ)法需要解釋的場(chǎng)景。

注意事項(xiàng):可利用場(chǎng)景比較少,JAVA 中如果碰到可以用 expression4J 代替。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-731277.html

public interface Expression {
    boolean interpret(String context);
}
@AllArgsConstructor
public class AndExpression implements Expression{

    private Expression expr1 = null;
    private Expression expr2 = null;

    @Override
    public boolean interpret(String context) {
        return expr1.interpret(context) && expr2.interpret(context);
    }
}
@AllArgsConstructor
public class OrExpression implements Expression{

    private Expression expr1 = null;
    private Expression expr2 = null;

    @Override
    public boolean interpret(String context) {

        return expr1.interpret(context) || expr2.interpret(context);
    }
}
@AllArgsConstructor
public class TerminalExpression implements Expression{

    private String data;

    @Override
    public boolean interpret(String context) {
        if (context.contains(data)){
            return true;
        }
        return false;
    }
}
    @Test
    public void test10(){
        Expression isMale = getMaleExpression();
        Expression isMarriedWoman = getMarriedWomanExpression();

        System.out.println("John is male? " + isMale.interpret("John"));
        System.out.println("Julie is a married women? "
                + isMarriedWoman.interpret("Married Julie"));

    }
    //規(guī)則:Robert 和 John 是男性
    private static Expression getMaleExpression(){
        Expression robert = new TerminalExpression("Robert");
        Expression john = new TerminalExpression("John");
        return new OrExpression(robert, john);
    }

    //規(guī)則:Julie 是一個(gè)已婚的女性
    private static Expression getMarriedWomanExpression(){
        Expression julie = new TerminalExpression("Julie");
        Expression married = new TerminalExpression("Married");
        return new AndExpression(julie, married);
    }

//John is male? true
//Julie is a married women? true

到了這里,關(guān)于行為型模式-解釋器模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式-解釋器設(shè)計(jì)模式

    解釋器模式(Interpreter Pattern)是一種行為型設(shè)計(jì)模式,它用于解釋一種語(yǔ)言或表達(dá)式的語(yǔ)法。該模式主要用于自定義語(yǔ)言解釋、查詢(xún)解析和規(guī)則引擎等領(lǐng)域。在解釋器模式中,我們定義了一個(gè)解釋器類(lèi),用于解釋和執(zhí)行特定語(yǔ)法規(guī)則的表達(dá)式。 在本篇博客中,我們將詳細(xì)介

    2024年02月09日
    瀏覽(997)
  • 設(shè)計(jì)模式:解釋器模式

    解釋器模式(Interpreter Pattern)是一種行為型設(shè)計(jì)模式,它定義了一種語(yǔ)言的文法,并且定義了該語(yǔ)言中各個(gè)元素的解釋器。通過(guò)使用解釋器,可以解析和執(zhí)行特定的語(yǔ)言表達(dá)式。 解釋器模式的核心思想是將一個(gè)語(yǔ)言的文法表示為一個(gè)類(lèi)的層次結(jié)構(gòu),并使用該類(lèi)的實(shí)例來(lái)表示

    2024年02月07日
    瀏覽(91)
  • 設(shè)計(jì)模式——解釋器模式

    設(shè)計(jì)模式——解釋器模式

    更多內(nèi)容,前往IT-BLOG 在軟件開(kāi)發(fā)中,會(huì)遇到有些問(wèn)題多次重復(fù)出現(xiàn),而且有一定的相似性和規(guī)律性。如果將它們歸納成一種簡(jiǎn)單的表達(dá)式(例如:正則表達(dá)式等),那么這些問(wèn)題實(shí)例將是該表達(dá)式的一些句子,這樣就可以用 “編譯原理” 中的解釋器模式來(lái)實(shí)現(xiàn)。 【1】解釋

    2024年02月03日
    瀏覽(308)
  • 【解釋器設(shè)計(jì)模式詳解】C/Java/Go/JS/TS/Python不同語(yǔ)言實(shí)現(xiàn)

    【解釋器設(shè)計(jì)模式詳解】C/Java/Go/JS/TS/Python不同語(yǔ)言實(shí)現(xiàn)

    解釋器模式(Interpreter Pattern)是一種行為型設(shè)計(jì)模式。這種模式實(shí)現(xiàn)了一個(gè)表達(dá)式接口,該接口解釋一個(gè)特定的上下文。這種模式常被用在 SQL 解析、符號(hào)處理引擎等。 解釋器模式常用于對(duì)簡(jiǎn)單語(yǔ)言的編譯或分析實(shí)例中,為了掌握好它的結(jié)構(gòu)與實(shí)現(xiàn),必須先了解編譯原理中的

    2023年04月12日
    瀏覽(1388)
  • 設(shè)計(jì)模式詳解-解釋器模式

    類(lèi)型:行為型模式 實(shí)現(xiàn)原理:實(shí)現(xiàn)了一個(gè)表達(dá)式接口,該接口使用標(biāo)識(shí)來(lái)解釋語(yǔ)言中的句子 作用:給定一個(gè)語(yǔ)言,定義它的文法表示,并定義一個(gè)解釋器,這個(gè)解釋器來(lái)解釋。 主要解決:一些重復(fù)的固定文法分別創(chuàng)建解釋器會(huì)很麻煩 何時(shí)使用:某一種特定類(lèi)型的問(wèn)題發(fā)生的

    2024年02月12日
    瀏覽(91)
  • 設(shè)計(jì)模式(23)解釋器模式

    設(shè)計(jì)模式(23)解釋器模式

    一、介紹: 1、定義:解釋器(Interpreter)模式是一種對(duì)象的行為模式。給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來(lái)解釋語(yǔ)言中的句子。 2、組成結(jié)構(gòu): (1)AbstractExpression(抽象表達(dá)式):約定解釋器的解釋操作,主要是一個(gè)interpret()方

    2024年02月06日
    瀏覽(99)
  • 解釋器設(shè)計(jì)模式

    解釋器設(shè)計(jì)模式

    解釋器設(shè)計(jì)模式(Interpreter Pattern)是一種行為型設(shè)計(jì)模式,它定義了一種語(yǔ)言的文法,并建立一個(gè)解釋器來(lái)解釋該語(yǔ)言中的句子。這種模式通常用于需要解釋或執(zhí)行一種特定類(lèi)型的語(yǔ)言的場(chǎng)景,例如編程語(yǔ)言的編譯器或解釋器、規(guī)則引擎系統(tǒng)等。 關(guān)鍵組成部分 抽象表達(dá)式(

    2024年02月21日
    瀏覽(93)
  • js設(shè)計(jì)模式:解釋器模式

    js設(shè)計(jì)模式:解釋器模式

    對(duì)文本進(jìn)行解釋和編譯的時(shí)候,就會(huì)用到解釋器模式 比如你寫(xiě)了一段js代碼,js引擎就會(huì)去解釋并執(zhí)行這段代碼 webpack中的各種loader就是用來(lái)解釋各種文件類(lèi)型的,并將其解釋為js可識(shí)別的代碼

    2024年02月22日
    瀏覽(103)
  • 設(shè)計(jì)模式之解釋器模式筆記

    設(shè)計(jì)模式之解釋器模式筆記

    記錄下學(xué)習(xí)設(shè)計(jì)模式-解釋器模式的寫(xiě)法。JDK使用版本為1.8版本。 意圖 :定義一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來(lái)解釋語(yǔ)言中的句子。 結(jié)構(gòu) : 其中: AbstractExpression 聲明一個(gè)程序的解釋操作,這個(gè)接口為抽象語(yǔ)法樹(shù)中所有的結(jié)點(diǎn)所

    2024年02月11日
    瀏覽(94)
  • 設(shè)計(jì)模式之解釋器模式(下)

    設(shè)計(jì)模式之解釋器模式(下)

    3)Context的作用 1.概述 在解釋器模式中,環(huán)境類(lèi)Context用于存儲(chǔ)解釋器之外的一些全局信息,它通常作為參數(shù)被傳遞到所有表達(dá)式的解釋方法interpret()中,可以在Context對(duì)象中存儲(chǔ)和訪問(wèn)表達(dá)式解釋器的狀態(tài),向表達(dá)式解釋器提供一些全局的、公共的數(shù)據(jù),此外還可以在Context中

    2024年04月12日
    瀏覽(91)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包