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

2021-06-08 01:44:46 字數 1459 閱讀 9990

最近讀程杰的《大話設計模式》, 但是**是c#版的, 於是參考書中和網上的若干**. 編寫設計模式中簡單工廠模式c++實現

簡單工廠模式理論總結如下:

1.

實質 -- 主要用於建立物件

.

將乙個具體類的例項化交給乙個靜態工廠方法來執行。

簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。

核心思想是用乙個工廠來根據輸入的條件產生不同的類,然後根據不同類的virtual函式得到不同的結果。

2.

優缺點

優點:

1) 

職責單一,實現簡單,且實現了客戶端**與具體實現的解耦.

是減少**耦合的一種設計方式,更易於維護.

2) 

新新增類時,不會影響以前的系統**.

缺點:

客戶端必須要知道基類和工廠類,耦合性差.

3.

應用場合

主要用於建立物件.

適用於不同情況建立不同的類時.

應用場合:

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

2) 

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

3) 

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

4.

模式中的角色

1) 工廠類(****** factory): 只包含了建立具體類的靜態方法。

2) 抽象產品(product):定義簡單工廠中要返回的產品。

3) 具體產品(concreteproduct):具體產品。

5 **部分

.h部分

// 抽象產品

class operation;

// 具體產品 -- 加法

class addoperation : public operation };

// 具體產品 -- 減法

class suboperation : public operation };

// 簡單工廠

class ccaculoperation;

operation* ccaculoperation::createproduct(char coper)

return oper;}

.cpp部分

#include "******factory.h"

#include

using namespace std;

int main()

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

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

設計模式 簡單工廠 C 實現

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

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

最近沒事吧就把設計模式上的一些模式用c 來實現一下。實現 如下 用四則運算做演示 include using namespace std class operation operation operation int numbera,int numberb void operation seta i...