之前寫了
設計模式系列目錄
今天說一下工廠方法模式:
定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類
所謂的決定並不是批模式允許子類本身在執行時做決定,而是指在編寫建立者類時,不需知道建立的產品是哪一下,選擇了使用
哪個子類,就決定了實際建立的產品是什麼。
1#region 工廠模式23
//產品
4public
abstract
class
product58
9//建造者10
//工廠方法是建立乙個框架,讓子類決定要如何實現具體的產品
11public
abstract
class
creator
1219
//讓子類去實現要生產什麼產品
20public
abstract product createproduct(string
f_type);
2122}23
#region 產品
24public
class
oneproduct : product
2530}31
32public
class
twoproduct : product
3338}39
40public
class
firstproduct : product
4146}47
48public
class
secondproduct : product
4954}55
#endregion
56//
第乙個建造工廠
57public
class
onecreator : creator
5868
69return
null;70
}71}72
//第二個建造工廠
73public
class
twocreator : creator
7484
return
null;85
}86}87
8889
90#endregion
1static
void main(string
args)
2
讓我們來看一下依賴關係
我們會看到 creator 和所有的產品(oneproduct、twoproduct...)都依賴了product.這是依賴倒置原則:要依賴抽象,不要依賴具體類
也就是說不能讓具體產品去依賴creator,不管是產品還是creator都應該依賴於抽象
就用這個原則我們要盡量做到
1變數不可以持有具體類的引用(如果使用new就會有具體類的引用。你可以改用工廠來避開這樣的做法)
2不要讓類派生自具體類(派生自乙個介面)
3不要覆蓋基類中已實現的方法
但在實際程式設計時不可能完全遵守這幾條,我們只要盡量做就可以了
c++**
product
#pragma once#includeview code#include
using
namespace
std;
class
product
protected
:
string
m_rodutname;
};class oneproduct : public
product
;class twoproduct : public
product
;
#include "view codestdafx.h
"#include
"product.h
"product::product()
product::~product()
//one product
oneproduct::oneproduct()
oneproduct::~oneproduct()
//twoproduct
twoproduct::twoproduct()
twoproduct::~twoproduct()
#pragma once#includeview code#include
class
product;
class
creator
;class onecreator : public
creator
;
#include "view code 呼叫stdafx.h
"#include
"creator.h
"#include
"product.h
"creator::creator()
product* creator::factorymehtod(const std::string&type)
creator::~creator()
product* onecreator::createproduct(const std::string&type)
else
if (type.compare("
two"
)) }
#include #includeview code"product.h
"#include
"creator.h
"int
main()
設計模式 工廠方法模式
一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...
設計模式 工廠方法模式
1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...
設計模式 工廠方法模式
框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...