1、工廠模式
創(chuàng)新互聯(lián):于2013年成立為各行業(yè)開(kāi)拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為上1000家公司企業(yè)提供了專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站推廣服務(wù), 按需網(wǎng)站開(kāi)發(fā)由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺(jué)效果,策劃師分析客戶的同行競(jìng)爭(zhēng)對(duì)手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。
面向抽象類編程,底下可以接N多個(gè)生產(chǎn)某種的具體工廠;
簡(jiǎn)單工廠模式:專門定義一個(gè)類來(lái)負(fù)責(zé)創(chuàng)建其它類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類;
2、具體實(shí)現(xiàn)
(1)、代碼如下
#include<iostream> using namespace std; class Fruit{ public: virtual void sayname() = 0; private: }; class Banana : public Fruit{ public: void sayname(){ cout<<"我是香蕉"<<endl; } private: }; class Apple : public Fruit{ public: void sayname(){ cout<<"我是蘋果"<<endl; } private: }; class AbFactory{ public: virtual Fruit *CreateProduct() = 0; private: }; class BananaFactory : public AbFactory{ public: virtual Fruit *CreateProduct(){ return new Banana; } private: }; class AppleFactory : public AbFactory{ public: virtual Fruit *CreateProduct(){ return new Apple; } private: }; //添加新的產(chǎn)品 class Pear : public Fruit{ public: void sayname(){ cout<<"我是 pear"<<endl; } private: }; class PearFactory : public AbFactory{ public: Fruit *CreateProduct(){ return new Pear; } private: }; int main(void){ AbFactory *factory = NULL; Fruit *fruit = NULL; //吃香蕉 factory = new BananaFactory; fruit = factory->CreateProduct(); fruit->sayname(); //吃梨 factory = new PearFactory; fruit = factory->CreateProduct(); fruit->sayname(); delete factory; return 0; }
(2)、運(yùn)行結(jié)果
(3)、工廠模式
擴(kuò)展性不好;
3、原型模式
提供一個(gè)clone()接口,讓普通對(duì)象擁有自我復(fù)制的功能!
相當(dāng)于拷貝構(gòu)造函數(shù)的編寫;(當(dāng)有成員為指針時(shí))這個(gè)牽扯深拷貝和淺拷貝的問(wèn)題;
4、具體實(shí)現(xiàn)
(1)、代碼如下
#include<iostream> #include<string> using namespace std; class Person{ public: virtual Person *clone() = 0; virtual void printT() = 0; private: }; class Cplus : public Person{ public: Cplus(){ m_name = ""; m_age = 0; } Cplus(string name, int age){ m_name = name; m_age = age; } virtual void printT(){ cout<<"m_name:"<<m_name<<" "<<"m_age:"<<m_age<<endl; } virtual Person *clone(){ Cplus *tmp = new Cplus; *tmp = *this; return tmp; } private: string m_name; int m_age; char *p; //此時(shí)就會(huì)牽扯深拷貝的問(wèn)題 }; int main(void){ Cplus *c1 = new Cplus("張三", 32); c1->printT(); Person *c2 = c1->clone(); c2->printT(); return 0; }
(2)、運(yùn)行結(jié)果
文章標(biāo)題:工廠模式和原型模式
文章分享:http://muchs.cn/article34/jcpspe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、電子商務(wù)、網(wǎng)站維護(hù)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)