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