簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。
工廠(creator)角色
簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類的建立產品類的方法可以被外界直接呼叫,建立所需的產品物件。
抽象產品(product)角色
簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。
具體產品(concrete product)角色
是簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。
父類提供通用方法介面函式shut
#ifndef fatheroperation_h
#define fatheroperation_h
class fatheroperation
;#endif // fatheroperation_h
子類a實現父類方法
#ifndef operation1_h
#define operation1_h
#include "fatheroperation.h"
#include #include class operation1 :public fatheroperation
protected:
private:
};#endif // operation1_h
子類b實現父類方法
#ifndef operation2_h
#define operation2_h
#include "fatheroperation.h"
#include #include class operation2 : public fatheroperation
protected:
private:
};#endif // operation2_h
工廠建立各例項
#ifndef factory******_h
#define factory******_h
#include "fatheroperation.h"
#include "operation1.h"
#include "operation2.h"
class factory******
}protected:
private:
};#endif // factory******_h
demo:
#include "factory******.h"
int main()
結果:
shut a......
shut b......
理解就是:乙個工廠,多個產品。產品需要有乙個虛基類。通過傳入引數,生成具體產品物件,並利用基類指標指向此物件。通過工廠獲取此虛基類指標,通過執行時多型,呼叫子類實現。
工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的資訊,決定究竟應該建立哪個具體類的物件.通過使用工廠類,外界可以從直接建立具體產品物件的尷尬局面擺脫出來,僅僅需要負責「消費」物件就可以了。而不必管這些物件究竟如何建立及如何組織的.明確了各自的職責和權利,有利於整個軟體體系結構的優化。
由於工廠類集中了所有例項的建立邏輯,違反了高內聚責任分配原則,將全部建立邏輯集中到了乙個工廠類中;它所能建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類了。
當系統中的具體產品類不斷增多時候,可能會出現要求工廠類根據不同條件建立不同例項的需求.這種對條件的判斷和對具體產品型別的判斷交錯在一起,很難避免模組功能的蔓延,對系統的維護和擴充套件非常不利;
工廠類負責建立的物件比較少;
客戶只知道傳入工廠類的引數,對於如何建立物件(邏輯)不關心;
由於簡單工廠很容易違反高內聚責任分配原則,因此一般只在很簡單的情況下應用。
設計模式2 簡單工廠模式
可維護,可復用,可擴充套件,靈活性好 通過繼承,封裝,多型將程式的耦合度降低 將計算機的計算過程獨立 為乙個功能 a.將 計算過程抽象為基類 抽象類,b.加減乘除四個子類繼承 基類 c.um 簡單工廠 繼承 空心三角形 實線 介面 空心三角形 虛線 依賴 虛線 箭頭 關聯 實線 箭頭 組合關係 實心...
設計模式(2) 簡單工廠設計模式
簡單工廠設計模式不屬於23種設計模式,但通過它可以更好的學習工廠方法設計模式和抽象工廠設計模式。簡單工廠設計模式流程 1 將需要的不同物件的相關 封裝到不同的類中,這些類成為產品類。2 將它們相同的 封裝到乙個抽象類產品類中,每乙個產品類都是這個抽象產品類的子類 3 最後提供乙個工廠類,在工廠類中提...
設計模式之 工廠模式(簡單工廠模式2)
工廠類是指包含乙個專門用來建立其他物件的方法的類,工廠類在多型性程式設計實踐中是至關重要的,它允許動態的替換類,修改配置,通常會使應用程式更加 靈活,熟練掌握工廠模式高階php開發人員是很重要的。工廠模式通常用來返回符合類似介面的不同的類,工廠的一種常見用法就是建立多型的提供者,從而允許我們基於應用...