C++設(shè)計(jì)模式之Static Factory模式詳解
簡(jiǎn)單工廠模式并不是GOF提出的23種設(shè)計(jì)模式中的一種。工廠模式有一種非常形象的描述,建立對(duì)象的類就如一個(gè)工廠,而需要被建立的對(duì)象就是一個(gè)個(gè)產(chǎn)品。
適用場(chǎng)合
1.在程序中,需要?jiǎng)?chuàng)建的對(duì)象很多,導(dǎo)致對(duì)象的new操作多且雜時(shí),需要使用簡(jiǎn)單工廠模式;
2.由于對(duì)象的創(chuàng)建過程是我們不需要去關(guān)心的,而我們注重的是對(duì)象的實(shí)際操作,所以,我們需要分離對(duì)象的創(chuàng)建和操作兩部分,如此,方便后期的程序擴(kuò)展和維護(hù)。
1.定義抽象類,也就是接口
class Product { public: virtual void show()=0; };
2.定義需要具體實(shí)現(xiàn)類,繼承抽象類,假設(shè)有三個(gè)產(chǎn)品
class ProductA:public Product { public: virtual void show() { printf("ProductA\n"); } }; class ProductB:public Product { public: virtual void show() { printf("ProductB\n"); } }; class ProductC:public Product { public: virtual void show() { printf("ProductC\n"); } };
3.定義工廠類,負(fù)責(zé)生產(chǎn)產(chǎn)品,這里傳入具體的參數(shù)來決定生產(chǎn)那個(gè)產(chǎn)品
class Factory { public: Product* CreateProduct(int num) { switch(num) //通過傳參實(shí)例化對(duì)象 { case 1: return new ProductA(); break; case 2: return new ProductB(); break; case 3: return new ProductC(); break; default: return NULL; break; } } };
4.實(shí)際調(diào)用
int main() { Factory* ProductFactory=new Factory(); //首先定有一個(gè)工廠對(duì)象 Product* A=ProductFactory->CreateProduct(1); //利用多態(tài)與工廠對(duì)象來傳參決定生產(chǎn)那個(gè)產(chǎn)品 A->show(); Product* B=ProductFactory->CreateProduct(2); B->show(); Product* C=ProductFactory->CreateProduct(3); C->show(); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C++設(shè)計(jì)模式之簡(jiǎn)單工廠模式的實(shí)現(xiàn)示例
- C++設(shè)計(jì)模式之工廠方法模式的實(shí)現(xiàn)及優(yōu)缺點(diǎn)
- C++設(shè)計(jì)模式之抽象工廠模式
- C++設(shè)計(jì)模式迪米特法則實(shí)例
- C++設(shè)計(jì)模式之Proxy模式(代理模式)詳解
- C++設(shè)計(jì)模式之備忘錄模式(Memento)
- C++設(shè)計(jì)模式之橋接模式(Bridge)
- C++設(shè)計(jì)模式之適配器模式(Adapter)
- C++設(shè)計(jì)模式之建造者模式(Builder)
- C++設(shè)計(jì)模式之裝飾模式(Decorator)
- C++設(shè)計(jì)模式之代理模式(Proxy)
- 淺談C++ 設(shè)計(jì)模式的基本原則
相關(guān)文章
c++實(shí)現(xiàn)單純形法現(xiàn)行規(guī)劃問題的求解(推薦)
這篇文章主要介紹了c++實(shí)現(xiàn)單純形法現(xiàn)行規(guī)劃問題的求解,本文針對(duì)問題通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04一文帶你入木三分地理解字符串KMP算法以及C++實(shí)現(xiàn)
KMP算法是一種改進(jìn)的字符串匹配算法,KMP算法的核心是利用匹配失敗后的信息,盡量減少模式串與主串的匹配次數(shù)以達(dá)到快速匹配的目的。本文就來和大家聊聊KMP算法的原理與實(shí)現(xiàn),需要的可以參考一下2022-12-12解決C++ openCV無法讀取視頻但是可以讀取圖像的問題記錄
在使用OpenCV的cv::VideoCapture讀取視頻文件時(shí),可能會(huì)遇到無法讀取特定格式,如MP4的視頻文件的問題,本文介紹解決C++ openCV無法讀取視頻但是可以讀取圖像的問題記錄,感興趣的朋友跟隨小編一起看看吧2024-09-09C語言 如何求兩整數(shù)的最大公約數(shù)與最小公倍數(shù)
這篇文章主要介紹了C語言中如何求兩整數(shù)的最大公約數(shù)與最小公倍數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11深入解析C++的循環(huán)鏈表與雙向鏈表設(shè)計(jì)的API實(shí)現(xiàn)
這篇文章主要介紹了C++的循環(huán)鏈表與雙向鏈表設(shè)計(jì)的API實(shí)現(xiàn),文中的示例對(duì)于鏈表結(jié)點(diǎn)的操作起到了很好的說明作用,需要的朋友可以參考下2016-03-03Qt開發(fā)之使用socket實(shí)現(xiàn)遠(yuǎn)程控制
本篇文章將會(huì)介紹下位機(jī)通過心跳包和上位機(jī)之間進(jìn)行數(shù)據(jù)交互和遠(yuǎn)程功能控制的實(shí)現(xiàn)方法。文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-11-11