日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解释器模式(行为模式)

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解释器模式(行为模式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???????????? 設計模式之Interpreter - 解釋器模式???????????? 2008-06-24 10:41:46??????????

分類: 項目管理

?源地址:http://blog.chinaunix.net/uid-20384806-id-1954236.html

Interpreter模式也叫解釋器模式,是由GoF提出的23種設計模式中的一種。Interpreter是行為模式之一,它是一種特殊的設計模式,它建立一個解釋器,對于特定的計算機程序設計語言,用來解釋預先定義的文法。

本文介紹設計模式中的解釋器(Interpreter)模式的概念,用法,以及實際應用中怎么樣使用Interpreter模式進行開發。 Interpreter模式的概念 Interpreter是一種特殊的設計模式,它建立一個解釋器,對于特定的計算機程序設計語言,用來解釋預先定義的文法。簡單地說,Interpreter模式是一種簡單的語法解釋器構架。
Interpreter模式有很多種實現方法,下面我們給出Interpreter模式的一種類圖來說明Interpreter模式: 在上圖中,我們假設需要在Client中解釋某文法,Client調用Context來存儲文法規則,并調用解釋器AbstractionExpression類樹來對該文法加以解釋。注意,上圖只是Interpreter模式的一種實現方式的類圖。
Context ????解釋器上下文環境類。用來存儲解釋器的上下文環境,比如需要解釋的文法等。 AbstractExpression ????解釋器抽象類。 ConcreteExpression ????解釋器具體實現類。 Interpreter模式的實現范例 為了幫助大家理解Interpreter模式的基本概念,我們在這里只舉一個最簡單的例子。 讓一個表達式a經過PlusExpression解釋器處理后使該表達式+1,經過MinusExpression解釋器處理后使該表達式-1。
代碼: import java.util.ArrayList; import java.util.List;
public class Client { ????public static void main(String []args) { ????????String inputExpr = "10"; ???????? ????????Context context = new Context(inputExpr); ???????? ????????List list = new ArrayList();
????????list.add(new PlusExpression()); ????????list.add(new PlusExpression()); ????????list.add(new MinusExpression()); ????????list.add(new MinusExpression()); ????????list.add(new MinusExpression());
????????for (int i=0;i<list.size();i++) { ??????????AbstractExpression expression = (AbstractExpression)list.get(i); ??????????expression.interpret(context); ????????} ???????? ????????System.out.println(context.getOutput()); ????} }
/** * Context * */ class Context { ????private String input; ????private int output;
????public Context (String input) { ????????this. input = input; ????}
????public String getInput() { ????????return input; ????}
????public void setInput(String input) { ????????this.input = input; ????}
????public int getOutput() { ????????return output; ????}
????public void setOutput(int output) { ????????this.output = output; ????} }
/** * Expression & subclass * */ abstract class AbstractExpression { ????public abstract void interpret(Context context); }
class PlusExpression extends AbstractExpression { ????public void interpret(Context context) { ????????System.out.println("PlusExpression ++"); ????????String input = context.getInput(); ????????int parsedResult = Integer.parseInt(input); ????????parsedResult ++; ????????context.setInput(String.valueOf(parsedResult)); ????????context.setOutput(parsedResult); ????} }
class MinusExpression extends AbstractExpression { ????public void interpret(Context context) { ????????System.out.println("PlusExpression --"); ????????String input = context.getInput(); ????????int parsedResult = Integer.parseInt(input); ????????parsedResult --; ????????context.setInput(String.valueOf(parsedResult)); ????????context.setOutput(parsedResult); ????} } 運行并顯示Client: C:\Interpreter>javac *.java C:\Interpreter>java Client PlusExpression ++ PlusExpression ++ PlusExpression -- PlusExpression -- PlusExpression -- 9 C:\Interpreter>

轉載于:https://www.cnblogs.com/kexb/p/3673533.html

總結

以上是生活随笔為你收集整理的解释器模式(行为模式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。