C 常見設計模式 工廠模式

2021-09-29 17:36:22 字數 3307 閱讀 3958

設計模式是對設計原則的具體化。用江湖話說就是武林秘籍,總結出來的一些固定套路,可以幫助有根基的程式設計師迅速打通任督二脈,從此做什麼都特別快。

工廠模式主要是為建立物件提供了介面。

應用場景如下:

a、 在編碼時不能預見需要建立哪種類的例項。

b、 系統不應依賴於產品類例項如何被建立、組合和表達的細節。

主要特點是需要在工廠類中做判斷,從而創造相應的產品,當增加新產品時,需要修改工廠類。使用簡單工廠模式,我們只需要知道具體的產品型號就可以建立乙個產品。

缺點:工廠類集中了所有產品類的建立邏輯,如果產品量較大,會使得工廠類變的非常臃腫。

/*

關鍵**:建立過程在工廠類中完成。*/​

#include

​using

namespace std;

​//定義產品型別資訊

typedef

enum

tank_type;

​//抽象產品類

class

tank;​

//具體的產品類

class

tank56

:public tank

​ const string&

type

() override

private

: string m_strtype;};

​//具體的產品類

class

tank96

:public tank

const string&

type

() override

​private

: string m_strtype;};

​//工廠類

class

tankfactory}}

;​​int

main()

定義乙個建立物件的介面,其子類去具體現實這個介面以完成具體的建立工作。如果需要增加新的產品類,只需要擴充套件乙個相應的工廠類即可。

缺點:產品類資料較多時,需要實現大量的工廠類,這無疑增加了**量。

/*

關鍵**:建立過程在其子類執行。*/​

#include

​using

namespace std;

​//產品抽象類

class

tank;​

//具體的產品類

class

tank56

:public tank

​ const string&

type

() override

private

: string m_strtype;};

​//具體的產品類

class

tank96

:public tank

const string&

type

() override

​private

: string m_strtype;};

​//抽象工廠類,提供乙個建立介面

class

tankfactory;​

//具體的建立工廠類,使用抽象工廠類提供的介面,去建立具體的產品例項

class

tank56factory

:public tankfactory};

​//具體的建立工廠類,使用抽象工廠類提供的介面,去建立具體的產品例項

class

tank96factory

:public tankfactory};

​​intmain()

抽象工廠模式提供建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。

當存在多個產品系列,而客戶端只使用乙個系列的產品時,可以考慮使用抽象工廠模式。

缺點:當增加乙個新系列的產品時,不僅需要現實具體的產品類,還需要增加乙個新的建立介面,擴充套件相對困難。

/*

* 關鍵**:在乙個工廠裡聚合多個同類產品。

* 以下**以白色衣服和黑色衣服為例,白色衣服為乙個產品系列,黑色衣服為乙個產品系列。白色上衣搭配白色褲子, 黑色上衣搭配黑色褲字。每個系列的衣服由乙個對應的工廠建立,這樣乙個工廠建立的衣服能保證衣服為同乙個系列。*/​

//抽象上衣類

class

coat;​

//黑色上衣類

class

blackcoat

:public coat

​ const string&

color

() override

private

: string m_strcolor;};

​//白色上衣類

class

whitecoat

:public coat

const string&

color

() override

​private

: string m_strcolor;};

​//抽象褲子類

class

pants;​

//黑色褲子類

class

blackpants

:public pants

const string&

color

() override

​private

: string m_strcolor;};

​//白色褲子類

class

whitepants

:public pants

const string&

color

() override

​private

: string m_strcolor;};

​//抽象工廠類,提供衣服建立介面

class

factory;​

//建立白色衣服的工廠類,具體實現建立白色上衣和白色褲子的介面

class

whitefactory

:public factory

​ pants*

createpants

() override

};​//建立黑色衣服的工廠類,具體實現建立黑色上衣和白色褲子的介面

class

blackfactory

:public factory

​ pants*

createpants

() override

};

常見設計模式 工廠模式

簡單工廠模式 定義 是指由乙個工廠物件決定建立出哪一種產品類的例項。目的是 解決 重複利用問題,減少冗餘。優點 只需要傳入乙個正確的引數,就可以獲取所需要的物件,無須知道其建立的細節。缺點 1 不易於擴充套件過於複雜的產品結構。2 工廠類的職責相對過重,增加新的產品時需要修改工廠類的判斷邏輯,違背開...

常見設計模式回顧 工廠模式

工廠模式是最常見的建立型模式,也是大多數人學習設計模式的起點。工廠模式屬於建立型模式,隱藏了物件建立的細節 這裡我們來看一下幾種常用的工廠模式 1.簡單工廠 public inte ce icar public class factory 簡單工廠類 factory 又被稱為 上帝類 想要創造什麼就...

常見設計模式 工廠模式(建立型模式)

工廠模式分為工廠方法模式和抽象工廠模式。工廠方法模式分為三種 建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。inte ce sender class mailsender implements sender class smssender implements sender public ...