解釋模型
一些應用提供了內建的指令碼或者巨集語言來讓使用者可以定義它們能夠在系統中進行的操作。interpreter
模式的目的就是使用乙個直譯器為使用者提供乙個一門定義語言的語法表示的直譯器,然後通過這個直譯器來解釋語言中的句子。
interpreter
模式提供了這樣乙個實現直譯器的框架。
interpreter
模式中,提供了terminalexpression
和nonterminalexpression
兩種表示式的解釋方式,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模式會存在什麼問題。由容...