對(duì)于工廠模式,具體上可以分為三類:
簡單工廠模式
工廠方法模式
抽象工廠模式
對(duì)于上面的三種工廠模式十兢,從上到下逐步抽象趣竣,并且更具一般性。而這篇博文主要講的是簡單工廠模式旱物,后兩種會(huì)在之后的博文中接著總結(jié)遥缕。
ProductA、ProductB和ProductC繼承自Product虛擬類宵呛,Show方法是不同產(chǎn)品的自描述通砍;Factory依賴于ProductA、ProductB和ProductC烤蜕,F(xiàn)actory根據(jù)不同的條件創(chuàng)建不同的Product對(duì)象封孙。
<ul>適用場(chǎng)合
<li>在程序中,需要?jiǎng)?chuàng)建的對(duì)象很多讽营,導(dǎo)致對(duì)象的new操作多且雜時(shí)虎忌,需要使用簡單工廠模式;</li>
<li>由于對(duì)象的創(chuàng)建過程是我們不需要去關(guān)心的橱鹏,而我們注重的是對(duì)象的實(shí)際操作膜蠢,所以堪藐,我們需要分離對(duì)象的創(chuàng)建和操作兩部分,如此挑围,方便后期的程序擴(kuò)展和維護(hù)礁竞。</li>
</ul>
#include <iostream>
using namespace std;
class Product {
public:
virtual void show() = 0;
};
class ProductA :public Product {
public:
void show() {
cout << "product a" << endl;
}
};
class ProductB :public Product {
public:
void show() {
cout << "product b" << endl;
}
};
class Factory {
public :
Product * CreateProduct(int type) {
switch (type)
{
case 1:
return new ProductA();
case 2:
return new ProductB();
default:
return NULL;
}
}
};
int main() {
Factory *f=new Factory();
Product *p1 = f->CreateProduct(1);
p1->show();
Product *p2 = f->CreateProduct(2);
p2->show();
//delete 是一個(gè)好習(xí)慣
delete f;
f = NULL;
delete p1;
p1 = NULL;
delete p2;
p2 = NULL;
system("pause");
return 0;
}
關(guān)于工廠模式,里面除了簡單工廠杉辙,還有工廠模式和抽象工廠模式模捂。不過這個(gè)都是簡單工廠模式的變化。