您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++中的工廠模式怎么實現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++中的工廠模式怎么實現(xiàn)”吧!
工廠模式中使用了多態(tài)的原理,來將具體實現(xiàn)和接口進(jìn)行有效的解耦合,符合開閉原則和依賴倒置原則
需要新加功能的時候不需要對原有代碼進(jìn)行修改。
抽象類human和抽象類factory就是調(diào)用接口,而實際的生產(chǎn)過程通過factory的子類(如boyfactory)來new
一個具體的human(如:boy)子類然后返回一個human父類的指針完成,如下圖:
具體的代碼如下:
點擊(此處)折疊或打開
#include<iostream>
using namespace std;
//工廠模式新增功能并不會修改原有代碼符合開閉原則
//使用多態(tài)實現(xiàn)
//純虛擬接口
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) //負(fù)責(zé)生產(chǎn)boy言外之意就是調(diào)用一個new來new出內(nèi)存空間
{
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) //負(fù)責(zé)生產(chǎn)woman言外之意就是調(diào)用一個new來new出內(nèi)存空間
{
p = new woman;
return p;
}
virtual ~womanfactory()
{
//cout<<"6:"<<endl;
delete p;
}
};
///////////////////////
int main(void)
{
//生產(chǎn)boy
factory* fa1= new boyfactory;
human* hm1 = NULL;
hm1 = fa1->greman();
hm1->getman();
delete fa1;
//生產(chǎn)woman
factory* fa2= new womanfactory;
human* hm2 = NULL;
hm2 = fa2->greman();
hm2->getman();
delete fa2;
cout<<"hello!"<<endl;
}
感謝各位的閱讀,以上就是“C++中的工廠模式怎么實現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C++中的工廠模式怎么實現(xiàn)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。