簡單工廠模式的C 實現 設計模式

2021-06-19 05:54:03 字數 1339 閱讀 2973

最近沒事吧就把設計模式上的一些模式用c++來實現一下。

實現**如下:【用四則運算做演示】

#include

using namespace std;

class operation

;operation::operation(int numbera, int numberb)

void operation::seta(int numbera)

void operation::setb(int numberb)

int operation::geta()

int operation::getb()

class operationadd:public operation//加法

int getresult();

};int operationadd::getresult()

class operationsub:public operation //減法

int getresult();

};int operationsub::getresult()

//乘法、除法、開方等其他由操作自己完成

class ******factory

;******factory::******factory(char op)

operation* ******factory::factory()

return m_opr;

}int main()

c++的確是一種很難學的語言。

優點

工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的資訊,決定究竟應該建立哪個具體類的物件.通過使用工廠類,外界可以從直接建立具體產品物件的尷尬局面擺脫出來,僅僅需要負責「消費」物件就可以了。而不必管這些物件究竟如何建立及如何組織的.明確了各自的職責和權利,有利於整個軟體體系結構的優化。

缺點

由於工廠類集中了所有例項的建立邏輯,違反了高內聚責任分配原則,將全部建立邏輯集中到了乙個工廠類中;它所能建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類了。

當系統中的具體產品類不斷增多時候,可能會出現要求工廠類根據不同條件建立不同例項的需求.這種對條件的判斷和對具體產品型別的判斷交錯在一起,很難避免模組功能的蔓延,對系統的維護和擴充套件非常不利;

這些缺點在工廠方法模式中得到了一定的克服。

使用場景

工廠類負責建立的物件比較少;

客戶只知道傳入工廠類的引數,對於如何建立物件(邏輯)不關心;

由於簡單工廠很容易違反高內聚責任分配原則,因此一般只在很簡單的情況下應用。

設計模式 簡單工廠模式 C 實現

考慮乙個簡單的軟體應用場景,乙個軟體系統可以提供多個外觀不同的按鈕 如圓形按鈕 矩形按鈕 菱形按鈕等 這些按鈕都源自同乙個基類,不過在繼承基類後不同的子類修改了部分屬性從而使得它們可以呈現不同的外觀,如果我們希望在使用這些按鈕時,不需要知道這些具體按鈕類的名字,只需要知道表示該按鈕類的乙個引數,並提...

設計模式 簡單工廠 C 實現

簡單工廠方法 定義乙個建立物件的介面,讓子類決定例項化那乙個類。框架定義了和維護物件之間的關係,同時物件的產生也是由框架來負責。場景 1.當乙個類不知道他所必須建立的物件的類的時候 2.當乙個類希望有它的子類指定他所建立的物件的時候。include class itoy class cattoy p...

設計模式中簡單工廠模式C 實現

最近讀程杰的 大話設計模式 但是 是c 版的,於是參考書中和網上的若干 編寫設計模式中簡單工廠模式c 實現 簡單工廠模式理論總結如下 1.實質 主要用於建立物件 將乙個具體類的例項化交給乙個靜態工廠方法來執行。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。核心思想是用乙個工廠來根據輸入的...