#ifndef __factorymethod_h__
#define __factorymethod_h__
#include //【說明】
// 工廠類模式通常由工廠類和產品類組成,在工廠類中提供建立建立產品的介面,客戶端使用工廠類建立具體的產品。
// 工廠類模式包含簡單工廠模式,工廠方法模式和抽象工廠模式。本節介紹簡單工廠和工廠方法。
//【定義】
// 簡單工廠模式 :專門定義乙個工廠類,用來建立不同型別的產品例項。
//【角色】
// 1) 抽象產品(product):描述具體產品的公共介面。
// 2) 具體產品(concreteproduct):工廠類建立的目標類,描述生產的具體產品。
// 3) 具體工廠(concretecreator):定義並實現建立產品的方法,根據產品的型別來建立乙個產品例項,由客戶呼叫。
//【意義】
// 不用new關鍵字來生成例項,而是呼叫生成例項的專用方法來生成例項,這樣就可以防止父類與其他具體類耦合,增加了**的靈活性。
// 將抽象產品、抽象工廠與具體產品、具體工廠分離開分別形成框架類和具體加工類,可在不修改框架類的前提下,完成其他具有同樣介面的產品的建立。
// 簡單工廠根據產品型別來建立不同的產品,當增加新的產品時,需要修改工廠類的方法函式。
//【示例】:
class cmd;
//抽象產品
class itask
virtual ~itask()
public:
virtual void execute(cmd * cmd) = 0;
};//具體產品
class downloadtask : public itask
;//具體產品
class upgradetask : public itask
;//具體工廠
class taskfactory
; itask* createtask(int type); //建立產品的介面;
};void testfactory();
//【說明】
// 簡單工廠違背了設計模式裡的總原則--對擴充套件開放,對修改封閉,當增加新的產品時,需要修改工廠建立函式。
// 工廠方法是對簡單工廠的擴充套件,將工廠類的方法宣告為介面,具體建立產品延遲到工廠子類中進行,不同產品使用不同的工廠子類建立。
//【定義】
// 工廠方法模式:定義乙個使用者建立物件的介面,讓子類決定例項化哪乙個類,工廠方法模式使乙個類的例項化延遲到其子類。
//【角色】
// 1) 抽象產品(product):描述具體產品的公共介面。
// 2) 具體產品(concreteproduct):工廠類建立的目標類,描述生產的具體產品。
// 3) 抽象工廠(creator):宣告建立產品的工廠方法介面,返回乙個抽象產品。
// 4) 真實工廠(concretecreator):實現抽象工廠的方法,返回乙個產品的例項,由客戶呼叫。
//【意義】
// 工廠方法不再使用列舉型別來區分不同產品的建立,而是通過繼承由不同的子類來建立不同的產品,工廠方法實現了同類產品的任意擴充套件。
// 當增加新的產品時,只需要增加新的子類,無需改變之前的**,達到了對修改關閉,對擴充套件開放。
// 缺點是當業務中存在大量的具體產品時,會導致具體產品類的數量急劇增加。
//【示例】:
class itaskfactory
virtual ~itaskfactory()
public:
virtual itask* createtask() = 0; //工廠方法約定的介面
};class downloadtaskfactory : public itaskfactory
;class upgradetaskfactory : public itaskfactory
;void testfactorymethod();
#endif
#include "factorymethod.h"
void downloadtask::execute(cmd * cmd)
void upgradetask::execute(cmd * cmd)
itask* taskfactory::createtask(int type)
else if(type == task_upgradetask)
else }
void testfactory()
itask* downloadtaskfactory::createtask()
itask* upgradetaskfactory::createtask()
void testfactorymethod()
簡單工廠設計模式和工廠方法設計模式
不論學習哪乙個設計模式,都要知道設計模式可以給我們帶來哪些好處,以及我們為什麼要學習設計模式。根據老師教導以及個人的片面經驗,我認為使用設計模式的目的是 增強 的復用性以及可維護性。可維護性就是以後是否方便擴充套件,增加了新的需求的話,是否好改,會不會出現非常難處理的問題,比如說 沒有很好地復用,構...
設計模式 簡單工廠 工廠方法 抽象工廠方法模式
簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...
設計模式 簡單工廠 工廠方法和抽象工廠
簡單工廠 工廠方法和抽象工廠三種設計模式都用來幫助我們將物件的例項化部分抽取出來,優化系統結構,在開發中經常使用。三者既有區別,也有聯絡,今天來對這三種設計模式做乙個簡單的記錄。一般來說,利用乙個靜態方法,即將createproduct方法設定為static,將我們所需要的產品型別傳入函式引數中 t...