C++設計模式建立型工廠模式
工廠模式中使用了多型的原理,來將具體實現和介面進行有效的解耦合,符合開閉原則和依賴倒置原則
需要新加功能的時候不需要對原有程式碼進行修改。
抽象類human和抽象類factory就是呼叫介面,而實際的生產過程通過factory的子類(如boyfactory)來new
一個具體的human(如:boy)子類然後返回一個human父類的指標完成,如下圖:
具體的程式碼如下:
需要新加功能的時候不需要對原有程式碼進行修改。
抽象類human和抽象類factory就是呼叫介面,而實際的生產過程通過factory的子類(如boyfactory)來new
一個具體的human(如:boy)子類然後返回一個human父類的指標完成,如下圖:
具體的程式碼如下:
點選(此處)摺疊或開啟
-
#include<iostream>
-
-
using namespace std;
-
//工廠模式新增功能並不會修改原有程式碼符合開閉原則
-
//使用多型實現
-
//純虛擬介面
-
class human
-
{
-
public:
-
virtual void getman(void) = 0;
-
virtual ~human()
-
{
-
//cout<<"4:"<<endl;
-
}
-
};
-
-
class factory
-
{
-
public:
-
virtual human* greman(void) = 0;
-
virtual ~factory()
-
{
-
// cout<<"3:"<<endl;
-
}
-
};
-
-
/////boy
-
class boy:public human
-
{
-
public:
-
virtual void getman(void)
-
{
-
cout<<"I'M BOY!"<<endl;
-
}
-
virtual ~boy()
-
{
-
// cout<<"2:"<<endl;
-
}
-
};
-
-
class boyfactory:public factory
-
{
-
private:
-
boy* p;
-
public:
-
virtual human* greman(void) //負責生產boy言外之意就是呼叫一個new來new出記憶體空間
-
{
-
p = new boy;
-
return p;
-
}
-
virtual ~boyfactory()
-
{
-
// cout<<"1:"<<endl;
-
delete p;
-
}
-
};
-
-
//後來新建的woman工廠和woman定義
-
//////////////woman
-
-
class woman:public human
-
{
-
public:
-
virtual void getman(void)
-
{
-
cout<<"I'M woman!"<<endl;
-
}
-
virtual ~woman()
-
{
-
// cout<<"5:"<<endl;
-
}
-
};
-
-
class womanfactory:public factory
-
{
-
private:
-
woman* p;
-
public:
-
virtual human* greman(void) //負責生產woman言外之意就是呼叫一個new來new出記憶體空間
-
{
-
p = new woman;
-
return p;
-
}
-
virtual ~womanfactory()
-
{
-
//cout<<"6:"<<endl;
-
delete p;
-
}
-
};
-
-
///////////////////////
-
-
int main(void)
-
{
-
//生產boy
-
factory* fa1= new boyfactory;
-
human* hm1 = NULL;
-
hm1 = fa1->greman();
-
hm1->getman();
-
delete fa1;
-
//生產woman
-
factory* fa2= new womanfactory;
-
human* hm2 = NULL;
-
hm2 = fa2->greman();
-
hm2->getman();
-
delete fa2;
-
-
cout<<"hello!"<<endl;
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2137029/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 建立型設計模式——抽象工廠模式設計模式抽象
- 設計模式-建立型-工廠方法設計模式
- JAVA設計模式 3【建立型】理解工廠模式與抽象工廠模式Java設計模式抽象
- 【Python設計模式】03 工廠模式:建立建立物件的工廠Python設計模式物件
- 設計模式-建立型模式-工廠模式(工廠三兄弟) TypeScript設計模式TypeScript
- python--設計模式--4--建立型--工廠方法模式Python設計模式
- 建立型:工廠模式-簡單工廠模式
- 建立型:工廠模式-工廠方法、抽象工廠模式抽象
- 設計模式-工廠模式二(工廠方法模式)設計模式
- 設計模式 —— 工廠模式設計模式
- 設計模式(工廠模式)設計模式
- 設計模式----工廠模式設計模式
- 【設計模式】工廠模式設計模式
- 設計模式-工廠模式設計模式
- 設計模式----工廠設計模式設計模式
- 設計模式-工廠設計模式設計模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式學習(二)工廠模式——抽象工廠模式設計模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 設計模式 - 工廠方法模式設計模式
- 設計模式 —— 抽象工廠模式設計模式抽象
- 設計模式-抽象工廠模式設計模式抽象
- Java 設計模式(工廠模式)Java設計模式
- PHP設計模式-- 工廠模式PHP設計模式
- 【設計模式】工廠方法模式設計模式
- 設計模式 #2 (工廠模式)設計模式
- java設計模式 – 工廠模式Java設計模式
- 設計模式~~~工廠方法模式設計模式
- 設計模式——抽象工廠模式設計模式抽象
- Java設計模式(工廠模式)Java設計模式
- Java設計模式-工廠模式Java設計模式
- 設計模式之【工廠模式】設計模式
- Java設計模式--工廠模式Java設計模式
- 設計模式-工廠方法模式設計模式
- 設計模式之工廠模式設計模式
- Java 設計模式之工廠方法模式與抽象工廠模式Java設計模式抽象
- 一.設計模式之工廠設計模式設計模式
- 設計模式 - 簡單工廠模式設計模式