C++設計模式之Static Factory模式詳解
簡單工廠模式并不是GOF提出的23種設計模式中的一種。工廠模式有一種非常形象的描述,建立對象的類就如一個工廠,而需要被建立的對象就是一個個產品。
適用場合
1.在程序中,需要創(chuàng)建的對象很多,導致對象的new操作多且雜時,需要使用簡單工廠模式;
2.由于對象的創(chuàng)建過程是我們不需要去關心的,而我們注重的是對象的實際操作,所以,我們需要分離對象的創(chuàng)建和操作兩部分,如此,方便后期的程序擴展和維護。
1.定義抽象類,也就是接口
class Product { public: virtual void show()=0; };
2.定義需要具體實現類,繼承抽象類,假設有三個產品
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.定義工廠類,負責生產產品,這里傳入具體的參數來決定生產那個產品
class Factory { public: Product* CreateProduct(int num) { switch(num) //通過傳參實例化對象 { case 1: return new ProductA(); break; case 2: return new ProductB(); break; case 3: return new ProductC(); break; default: return NULL; break; } } };
4.實際調用
int main() { Factory* ProductFactory=new Factory(); //首先定有一個工廠對象 Product* A=ProductFactory->CreateProduct(1); //利用多態(tài)與工廠對象來傳參決定生產那個產品 A->show(); Product* B=ProductFactory->CreateProduct(2); B->show(); Product* C=ProductFactory->CreateProduct(3); C->show(); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
解決C++ openCV無法讀取視頻但是可以讀取圖像的問題記錄
在使用OpenCV的cv::VideoCapture讀取視頻文件時,可能會遇到無法讀取特定格式,如MP4的視頻文件的問題,本文介紹解決C++ openCV無法讀取視頻但是可以讀取圖像的問題記錄,感興趣的朋友跟隨小編一起看看吧2024-09-09深入解析C++的循環(huán)鏈表與雙向鏈表設計的API實現
這篇文章主要介紹了C++的循環(huán)鏈表與雙向鏈表設計的API實現,文中的示例對于鏈表結點的操作起到了很好的說明作用,需要的朋友可以參考下2016-03-03