您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++中的工廠模式怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++中的工廠模式怎么實現”吧!
工廠模式中使用了多態的原理,來將具體實現和接口進行有效的解耦合,符合開閉原則和依賴倒置原則
需要新加功能的時候不需要對原有代碼進行修改。
抽象類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;
}
感謝各位的閱讀,以上就是“C++中的工廠模式怎么實現”的內容了,經過本文的學習后,相信大家對C++中的工廠模式怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。