23種設計模式C 原始碼與UML實現 解釋模型

2021-10-10 23:51:14 字數 1444 閱讀 6222

解釋模型

一些應用提供了內建的指令碼或者巨集語言來讓使用者可以定義它們能夠在系統中進行的操作。interpreter模式的目的就是使用乙個直譯器為使用者提供乙個一門定義語言的語法表示的直譯器,然後通過這個直譯器來解釋語言中的句子。

interpreter模式提供了這樣乙個實現直譯器的框架。

interpreter模式中,提供了terminalexpressionnonterminalexpression兩種表示式的解釋方式,context類用於為解釋過程提供一些附加資訊。(例如全域性的資訊)

context

直譯器上下文環境類。用來儲存直譯器的上下文環境,比如需要解釋的文法等。

abstractexpression

直譯器抽象類

concreteexpression

直譯器具體實現類。

//

// created by andrew on 2020/11/29.

//#include

using

namespace std;

class

context

intgetnum()

const

intgetres()

const

void

setnum

(int num)

void

setres

(int res)

private

:int m_num;

int m_res;}

;class

expression;}

;//加法

class

plu***pression

:public expression

void

interpreter

(context *context) override

private

: context *context;};

// 減法

class

minu***pression

:public expression

void

interpreter

(context * context) override

private

: context * context;};

intmain

(int argc,

char

*ar**)

23種設計模式C 原始碼與UML實現 原型模式

原型模式 乙個複雜物件,具有自我複製功能,統一一套介面。原型模式主要面對的問題是 某些結構複雜的物件的建立工作,由於需求的變化,這些物件進場面對著劇烈的變化,但是他們卻擁有比較一致的介面。原型模式 prototype pattern 是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立...

23種設計模式C 原始碼與UML實現 組合模式

組合模式 composite模式也叫做組合模式,是構造型的設計模式之一。通過遞迴的手段構造樹形的物件結構,並可以通過乙個物件來訪問整個物件樹。component樹形結構的節點抽象 leaf樹形結構的葉節點 composite樹形結構的枝節點 適用於 單個物件的使用具有一致性,將物件組合成樹形結構表示...

23種設計模式C 原始碼與UML實現 迭代器模式

迭代器模式 iterator模式也叫迭代模式,是行為模式之一,他把對容器種包含的內部物件的訪問委讓給外部類,使用iterator按順序進行遍歷訪問的設計模式。在使用iterator模式之前,首先應該明白iterator模式是用來解決什麼問題的。或者說如果不使用iterator模式會存在什麼問題。由容...