架構模式 直譯器模式

2022-05-03 05:09:09 字數 1537 閱讀 3153

什麼是架構模式?

根據維基百科中的定義:

架構模式是乙個通用的、可重用的解決方案,用於在給定上下文中的軟體體系結構中經常出現的問題。架構模式與軟體設計模式類似,但具有更廣泛的範圍。

一、模式定義

直譯器模式用於設計乙個解釋用專用語言編寫的程式的元件。它主要指定如何評估程式的行數,即以特定的語言編寫的句子或表示式。其基本思想是為每種語言的符號都有乙個分類。

二、模式結構

上圖是直譯器模式的uml結構圖

直譯器模式主要包含如下幾個角色:

三、**實現

class context {}

abstract class expression

class terminalexpression extends expression

}class nonterminalexpression extends expression

public object interpreter(context ctx)

}public class client {

public static void main(string args){

string expression = "";

char chararray = expression.tochararray();

context ctx = new context();

stackstack = new stack();

for(int i=0;i文法遞迴的**部分需要根據具體的情況來實現,因此在**中沒有體現。抽象表示式是生成語法集合的關鍵,每個非終結符表示式解釋乙個最小的語法單元,然後通過遞迴的方式將這些語法單元組合成完整的文法,這就是直譯器模式。

四、優缺點

優點:高度動態的行為是可行的。對終端使用者程式設計性提供好處。提高靈活性,因為替換乙個解釋程式很容易。

缺點:由於解釋語言通常比編譯後的語言慢,因此效能可能是乙個問題。

五、使用場景

六、模式總結

注意事項

直譯器模式真的是乙個比較少用的模式,因為對它的維護實在是太麻煩了,想象一下,一坨一坨的非終結符直譯器,假如不是事先對文法的規則瞭如指掌,或者是文法特別簡單,則很難讀懂它的邏輯。直譯器模式在實際的系統開發中使用的很少,因為他會引起效率、效能以及維護等問題。

1、在直譯器模式中由於語法是由很多類表示的,所以可擴充套件性強。

2、雖然直譯器的可擴充套件性強,但是如果語法規則的數目太大的時候,該模式可能就會變得異常複雜。所以直譯器模式適用於文法較為簡單的。

3、直譯器模式可以處理指令碼語言和程式語言。常用於解決某一特定型別的問題頻繁發生情況。

MVC 架構模式

mvc架構模式 模型 檢視 控制器 model view controller 模型 模型代表應用程式的資料以及用於訪問控制和修改這些資料的業務規則,當模型發生改變時,它會通知檢視,並為檢視提供查詢模型相關狀態的能力.同時,它也為控制器提供訪問封裝在模型內部的應用程式功能的能力.檢視 檢視用來組織模...

常用架構模式

根據維基百科中的定義 架構模式是乙個通用的 可重用的解決方案,用於在給定上下文中的軟體體系結構中經常出現的問題。架構模式與軟體設計模式類似,但具有更廣泛的範圍。在本文中,將簡要地解釋以下10種常見的體系架構模式,以及它們的用法 優缺點。分層模式 客戶端 伺服器模式 主從裝置模式 管道 過濾器模式 模...

iOS MVC 架構模式

2 view 檢視物件 3 controller 控制器物件 直到進行單元測試的時候才會發現問題越來越明顯。因為你的 viewcontroller 和 view 是緊密耦合的,對它們進行測試就顯得很艱難 你得有足夠的創造性來模擬 view 和它們的生命週期,在以這樣的方式來寫 view contro...