C C 設計模式 二 簡單工廠模式

2021-10-24 09:47:37 字數 1690 閱讀 4373

簡單工廠模式屬於類的建立型模式,又叫做靜態工廠方法模式。通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。

1.工廠(creator)角色

簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類可以被外界直接呼叫,建立所需的產品物件。

2.抽象(product)角色

簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。

3.具體產品(concrete product)角色

簡單工廠模式所建立的具體例項物件

依賴: 乙個類的物件 當另外乙個類的函式引數 或者是 返回值

簡單工廠模式的優缺點

在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用時可以直接根據工廠類去建立所需的例項,而無需了解這些物件是如何建立以及如何組織的。有利於整個軟體體系結構的優化。不難發現,簡單工廠模式的缺點也正體現在其工廠類上,由於工廠類集中了所有例項的建立邏輯,所以「高內聚」方面做的並不好。另外,當系統中的具體產品類不斷增多時,可能會出現要求工廠類也要做相應的修改,擴充套件性並不很好。

include "iostream"

using namespace std;

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

//元素分析:

//抽象產品類:水果類

//具體的水果了:香蕉類、蘋果類、梨子

//優點 適用於不同情況建立不同的類時

//缺點 客戶端必須要知道基類和工廠類,耦合性差 增加乙個產品,需要修改工廠類

class fruit

;class banana : public fruit

/*

需求:模擬四則運算;

用操作符工廠類生產操作符(加減乘除), 進行結果運算

*//*

運算子抽象類 coperation

加減乘除具體的類 (注意含有2個運算元)

工廠類ccalculato***ctory

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

*/#include "iostream"

using namespace std;

class coperation

;class addoperation : public coperation

private:

};class suboperation : public coperation

private:

};class ccalculato***ctory

return tmp;

}};void main()

{ coperation *op1 = ccalculato***ctory::createoperation('+');

op1->first = 10;

op1->second = 20;

cout

op2->second = 20;

cout

設計模式(二) 工廠模式(簡單工廠)

我們在學習乙個東西之前,應該要先了解下他為什麼出現,他解決了什麼問題。這樣才可以帶著思考的高效學習。以資料庫為例,我們知道常見的關係型資料庫有mysql sqlserver oracle等,每種資料庫連線例項的建立都是複雜且易錯麻煩的。如果將這些連線例項交給使用者來建立,是十分不合適的。我們就希望有...

C C 設計模式 二 抽象工廠模式

抽象工廠模式是所有形態的工廠模式中最為抽象和最其一般性的。抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定產品的具體型別的情況下,能夠建立多個產品族的產品物件。備註 工廠模式 要麼生產香蕉 要麼生產蘋果 要麼生產西紅柿 但是不能同時生產乙個產品組。抽象工廠 能同時生產乙個產品族。抽象工廠存...

JAVA設計模式二簡單工廠模式

一 簡單工廠模式 就是建立乙個工廠類,對實現了同一介面 或者繼承同一類 的一些類進行例項的建立。獲取例項的方法返回值為介面或父類物件 用到多型父類引用指向子類 物件 乙個模式使用了封裝繼承和多型 共同的實現介面 帶有傳送方法的傳送器介面 public inte ce sender 傳送郵箱的類 pu...