簡單工廠並不是乙個「真正的「模式,可以把它當作一種程式設計習慣。它的最大優點在於工廠類中包含必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴
工廠方法模式:定義了乙個建立物件的介面,但由於類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。
要點:1.所有的工廠都是用來封閉物件的建立
2.簡單工廠,雖然不是真正的設計模式,但仍不失為乙個簡單的方法,可以將客戶程式從具體類解耦
3.工廠方法使用繼承,把物件的建立委託給子類,子類實現工廠方法來建立物件
4.所有工廠模式都通過減少應用程式和具體類之間的依賴促進松耦合
5.工廠方法允許類將例項化延遲到子類進行
6.依賴倒置原則,指導我們避免依賴具體型別,而要盡量依賴抽象
設計原則:依賴倒置:依賴抽象,不要依賴具體類
1.變數不可以持有具體類的引用
2.不要讓類派生自具體類
3.不要覆蓋基類中已實現的方法
[img]
pizza.h
#ifndef pizza_h
#define pizza_h
#include
using namespace std;
enum pizzatype;
class pizza
void bake()
void cut()
void box()
};class cheesepizza:public pizza{};
class nystylecheesepizza:public pizza{};
class veggiepizza:public pizza{};
class nystyleveggiepizza:public pizza{};
class clampizza:public pizza{};
class nystyleclampizza:public pizza{};
class pepperonpizza:public pizza{};
class nystylepepperonpizza:public pizza{};
#endif // pizza_h
pizzastore.h
#ifndef pizzastore_h
#define pizzastore_h
#include"pizza.h"
#include"******pizzafactory.h"
class pizzastore
//工廠方法
virtual pizza* createpizza(pizzatype pt)=0;
//由於pizza是抽象的,orderpizza並不知道哪些例項加進來,也就是解耦
pizza* orderpizza(pizzatype pt)
private:
******pizzafactory* mfactory;
};class nypizzastore:public pizzastore}};
#endif // pizzastore_h
******pizzafactory.h
#ifndef ******pizzafactory_h
#define ******pizzafactory_h
#include"pizza.h"
#include
//簡單工廠
class ******pizzafactory}};
class nypizzafactory:public ******pizzafactory}};
#endif // ******pizzafactory_h
main.cpp
#include"pizzastore.h"
int main()
prepare...
bake...
cut...
box...
Java設計模式 抽象工廠模式(factory)
目錄目的 應用例項 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。工廠模式是最常用的設計模式之一。這種型別的設計模式輸出建立型模式,提供了一種建立物件的最佳方式。在工廠模式中建立物件是通過使用乙個共同 的介面來指向新建立的物件。乙個框架或者系統要由多個子工具系列的乙個工具來配置...
工廠模式 簡單工廠
簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...
工廠模式 簡單工廠
工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...