C 設計模式之工廠模式

2021-07-11 08:52:19 字數 2369 閱讀 9721

在實際專案中,工廠模式是用的比較多的, 這篇文章也主要是通過具體的簡單的c++的乙個例項來解釋工廠模式。

//chichen相關**

#ifndef chichen_h

#define chichen_h

#include

"homestorage.h"

class chichen : public homestorage

;#endif

// chichen_h

#include

"chichen.h"

chichen::chichen()

void chichen::crow()

void chichen::feed()

void chichen::sleep()

#ifndef duck_h

#define duck_h

#include

"homestorage.h"

class duck : public homestorage

;#endif

// duck_h

#include

"duck.h"

duck::duck()

void duck::crow()

void duck::feed()

void duck::sleep()

//farmers

#ifndef farmers_h

#define farmers_h

#include

"homestorage.h"

#include

"duck.h"

#include

"chichen.h"

class farmers

; farmers();

homestorage* gethomestorage(int type);

private:

homestorage *m_homestorage;

};#endif

// farmers_h

#include

"farmers.h"

farmers::farmers()

:m_homestorage(null)

homestorage* farmers::gethomestorage(int type)

if(type

== chichen) else

if (type

== duck)

return m_homestorage;

}

homestorage相關

#ifndef homestorage_h

#define homestorage_h

#include

#include

using

namespace::std;

class homestorage

;#endif // homestorage_h

#include "homestorage.h"

homestorage::homestorage()

main函式

#include "farmers.h"

#include "homestorage.h"

int main(int argc, char *argv)

在這個例項中, 有乙個家蓄的類homestorage, 它用純虛函式

virtual

void crow() = 0;

virtual

void feed() = 0;

virtual

void sleep() = 0;

用來描述進食, 睡覺 和 發音。 後面的每種動物繼承於它,並要求一定需要重寫, 因為純虛函式的原因。

而farmers 類的gethomestorage用來獲取是哪種家蓄。 在這裡用到了多肽, 可以發現,有很多種設計模式都用到了多肽, 實現把子類物件向上轉型為父類物件。

所以針對工廠模式的要點在於把每種相關的,各自建立自對應的類, 它們再抽象出乙個父類, 客戶端通過型別碼來獲取,對應的內容。

c 設計模式 之 工廠模式之 工廠模式

1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...

c 設計模式之 工廠模式

使用工廠的客戶根本不知道具體的類.工廠的使用者建立乙個基類的物件.但由子類決定例項化哪個.這就允許我們服從子類的例項化,但是呼叫都不知道哪個物件被建立.來自源 wiki include class button class osxbutton public button class windowsb...

設計模式之 工廠模式 C

主要介紹抽象工廠模式,以及工廠方法和抽象工廠之間的區別 抽象工廠允許客戶使用抽象的介面來建立一組相關的產品,而無需知道實際產出的具體產品是什麼。這樣,客戶就從具體的產品中解耦出來。抽象工廠類圖如下所示 2 抽象工廠vs工廠方法 抽象工廠 提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具...