在實際專案中,工廠模式是用的比較多的, 這篇文章也主要是通過具體的簡單的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工廠方法 抽象工廠 提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具...