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

設(shè)計模式詳解-解釋器模式

這篇具有很好參考價值的文章主要介紹了設(shè)計模式詳解-解釋器模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

類型:行為型模式

實現(xiàn)原理:實現(xiàn)了一個表達式接口,該接口使用標(biāo)識來解釋語言中的句子

作用:給定一個語言,定義它的文法表示,并定義一個解釋器,這個解釋器來解釋。

主要解決:一些重復(fù)的固定文法分別創(chuàng)建解釋器會很麻煩

何時使用:某一種特定類型的問題發(fā)生的頻率足夠高

解決的方法:構(gòu)建語法樹

實現(xiàn)核心:構(gòu)建環(huán)境類,包含解釋器之外的一些全局信息,一般是 HashMap。

應(yīng)用實例:編譯器、運算表達式計算。

優(yōu)點:1、易擴展 2、表達式解釋方法增加 3、易于實現(xiàn)文法

缺點: 1、可利用場景數(shù)量不確定。 2、復(fù)雜文法難維護。 3、解釋器模式可能引起類膨脹。

使用場景:SQL 解析、符號處理引擎等。文章來源地址http://www.zghlxwxcb.cn/news/detail-659250.html

實現(xiàn)

步驟 1
創(chuàng)建一個表達式接口。

Expression.java
public interface Expression {
   public boolean interpret(String context);
}
步驟 2
創(chuàng)建實現(xiàn)了上述接口的實體類。

TerminalExpression.java
public class TerminalExpression implements Expression {
   
   private String data;
 
   public TerminalExpression(String data){
      this.data = data; 
   }
 
   @Override
   public boolean interpret(String context) {
      if(context.contains(data)){
         return true;
      }
      return false;
   }
}
OrExpression.java
public class OrExpression implements Expression {
    
   private Expression expr1 = null;
   private Expression expr2 = null;
 
   public OrExpression(Expression expr1, Expression expr2) { 
      this.expr1 = expr1;
      this.expr2 = expr2;
   }
 
   @Override
   public boolean interpret(String context) {      
      return expr1.interpret(context) || expr2.interpret(context);
   }
}
AndExpression.java
public class AndExpression implements Expression {
    
   private Expression expr1 = null;
   private Expression expr2 = null;
 
   public AndExpression(Expression expr1, Expression expr2) { 
      this.expr1 = expr1;
      this.expr2 = expr2;
   }
 
   @Override
   public boolean interpret(String context) {      
      return expr1.interpret(context) && expr2.interpret(context);
   }
}
步驟 3
InterpreterPatternDemo 使用 Expression 類來創(chuàng)建規(guī)則,并解析它們。

InterpreterPatternDemo.java
public class InterpreterPatternDemo {
 
   //規(guī)則:Robert 和 John 是男性
   public static Expression getMaleExpression(){
      Expression robert = new TerminalExpression("Robert");
      Expression john = new TerminalExpression("John");
      return new OrExpression(robert, john);    
   }
 
   //規(guī)則:Julie 是一個已婚的女性
   public static Expression getMarriedWomanExpression(){
      Expression julie = new TerminalExpression("Julie");
      Expression married = new TerminalExpression("Married");
      return new AndExpression(julie, married);    
   }
 
   public static void main(String[] args) {
      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"));
   }
}
步驟 4
執(zhí)行程序,輸出結(jié)果:

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


這段代碼是一個解釋器模式(Interpreter Pattern)的示例。解釋器模式用于定義語言的文法,并解析相關(guān)的表達式。

在這個示例中,首先創(chuàng)建了一個表達式接口 Expression,其中定義了一個 interpret 方法用于解釋表達式。

接著定義了三個實現(xiàn)了 Expression 接口的實體類:TerminalExpression、OrExpression、AndExpression。

TerminalExpression 類表示終結(jié)符表達式,它用于判斷給定的上下文是否包含特定的數(shù)據(jù)。

OrExpression 類和 AndExpression 類表示非終結(jié)符表達式,它們用于組合其他表達式并進行邏輯運算。

最后,在 InterpreterPatternDemo 類中使用 Expression 類來創(chuàng)建具體的規(guī)則,并對其進行解析。

在 main 方法中,通過調(diào)用 getMaleExpression 和 getMarriedWomanExpression 方法創(chuàng)建了兩條規(guī)則,并使用 interpret 方法對輸入的上下文進行解釋。

運行程序后,輸出了兩個解釋結(jié)果。

注意:這只是解釋器模式的一個簡單示例,實際應(yīng)用中可能會更加復(fù)雜。解釋器模式通常用于處理特定領(lǐng)域的語言解析或規(guī)則驗證等場景。

到了這里,關(guān)于設(shè)計模式詳解-解釋器模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • java設(shè)計模式之解釋器設(shè)計模式的前世今生

    解釋器設(shè)計模式是什么? 解釋器模式是一種行為型設(shè)計模式,它定義了一種以語法表達式的形式來表示特定規(guī)則的語言,并提供了一種解釋器來解釋這些語法表達式的實現(xiàn)方法。解釋器模式通常用于構(gòu)建編程語言、詞法分析、正則表達式、數(shù)學(xué)表達式等應(yīng)用程序。它提供了一

    2024年02月06日
    瀏覽(87)
  • 【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——解釋器模式Interpreter(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——解釋器模式Interpreter(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    通過解釋器模式來實現(xiàn)四則運算,如計算 a+b-c 的值,具體要求 先輸入表達式的形式,比如 a+b+c-d+e ,要求表達式的字母不能重復(fù) 在分別輸入 a,b,c,d,e 的值 最后求出結(jié)果 編寫一個方法,接收表達式的形式,然后根據(jù)用戶輸入的數(shù)值進行解析,得到結(jié)果 【分析】 如果加入新的

    2024年02月13日
    瀏覽(94)
  • 設(shè)計模式-解釋器設(shè)計模式

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

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

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

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

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

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

    2024年02月03日
    瀏覽(308)
  • 設(shè)計模式(23)解釋器模式

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

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

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

    解釋器設(shè)計模式

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

    2024年02月21日
    瀏覽(93)
  • 設(shè)計模式(行為型模式)解釋器模式

    ?? 解釋器模式(Interpreter Pattern) 是一種行為設(shè)計模式,用于解釋特定語言或處理特定問題領(lǐng)域的語法或表達式。它定義了一種語言的語法表示,并使用該表示來解釋語言中的句子。通常用于構(gòu)建解析器、編譯器和規(guī)則評估引擎等場景。 在解釋器模式中,有以下關(guān)鍵角色:

    2024年02月20日
    瀏覽(96)
  • 設(shè)計模式之解釋器模式筆記

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

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

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

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

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

    2024年04月12日
    瀏覽(91)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包