日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++设计模式之工厂模式(1)

發布時間:2023/12/9 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++设计模式之工厂模式(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于設計模式的作用:

幫助我們將應用組織成容易了解,容易維護,具有彈性的架構,建立可維護的OO系統,要訣在于隨時想到系統以后可能需要的變化以及應付變化的原則。

具體可參考:https://www.cnblogs.com/linkstar/p/7859980.html

由于Caffe中的solver產生一系列的solver子類以及建立一系列layer類時就用到了工廠模式(參考:https://blog.csdn.net/fangjin_kl/article/details/54019066)。所以這里首先介紹一下第一種設計模式-----工廠模式

參考博客:https://blog.csdn.net/wuzhekai1985/article/details/6660462

工廠模式有三種:

(1)簡單工廠模式

(2)工廠方法模式

(3)抽象工廠模式

1、簡單工廠模式

這么描述:現在有一個工廠Factory類,專門生成核core,現在要生產兩種產品core_A 和 core_B,代碼如下:

enum CTYPE {COREA, COREB}; class SingleCore { public: virtual void Show() = 0; }; //單核A class SingleCoreA: public SingleCore { public: void Show() { cout<<"SingleCore A"<<endl; } }; //單核B class SingleCoreB: public SingleCore { public: void Show() { cout<<"SingleCore B"<<endl; } }; //唯一的工廠,可以生產兩種型號的處理器核,在內部判斷 class Factory { public: SingleCore* CreateSingleCore(enum CTYPE ctype) { if(ctype == COREA) //工廠內部判斷 return new SingleCoreA(); //生產核A else if(ctype == COREB) return new SingleCoreB(); //生產核B else return NULL; } };

?

當然這么做也有一個缺點:當Factory要生產一個新的產品時,就要修改factory類,然而這樣就違背了開放封閉原則,即軟件實體(類、函數、模塊)不可修改,只能擴展;所以為了通過擴展來實現可以生產新的產品,引入了工廠方法模式;

2、工廠方法模式

這么來描述:通過類的繼承來實現擴展功能,即從父類factory中派生出factory_A類專門用來生產core_A 產品 , 派生出favtory_B類從來生產core_B產品。這樣子如果味蕾要生產新的產品時,只需要派生出新的工廠子類就行了。代碼如下:

class SingleCore { public: virtual void Show() = 0; }; //單核A class SingleCoreA: public SingleCore { public: void Show() { cout<<"SingleCore A"<<endl; } }; //單核B class SingleCoreB: public SingleCore { public: void Show() { cout<<"SingleCore B"<<endl; } }; class Factory { public: virtual SingleCore* CreateSingleCore() = 0; }; //生產A核的工廠 class FactoryA: public Factory { public: SingleCoreA* CreateSingleCore() { return new SingleCoreA; } }; //生產B核的工廠 class FactoryB: public Factory { public: SingleCoreB* CreateSingleCore() { return new SingleCoreB; } };

?

當然上面這么做也有一個缺點,就是每生產一種新的類別時就需要建立一個新的工廠,那么就存在這樣一種情況,依然core_A類,可能我們要對A生產一系列產品,比如單核的A和多核的A,如果還是用工廠方法模式就太繁瑣了,所以引入了抽象工廠模式;

3、抽象工廠模式

這么描述:它提供了一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類,就是說父類factory只指定要生產單核類和多核類,而不需要指定A、B、C類等等。

代碼如下:

//單核 class SingleCore { public: virtual void Show() = 0; }; class SingleCoreA: public SingleCore { public: void Show() { cout<<"Single Core A"<<endl; } }; class SingleCoreB :public SingleCore { public: void Show() { cout<<"Single Core B"<<endl; } }; //多核 class MultiCore { public: virtual void Show() = 0; }; class MultiCoreA : public MultiCore { public: void Show() { cout<<"Multi Core A"<<endl; } }; class MultiCoreB : public MultiCore { public: void Show() { cout<<"Multi Core B"<<endl; } }; //工廠 class CoreFactory { public: virtual SingleCore* CreateSingleCore() = 0; //只指定要生產單核類和多核類,而不需要指定要生產A還是b類等等virtual MultiCore* CreateMultiCore() = 0; }; //工廠A,專門用來生產A型號的處理器 class FactoryA :public CoreFactory { public: SingleCore* CreateSingleCore() { return new SingleCoreA(); } MultiCore* CreateMultiCore() { return new MultiCoreA(); } }; //工廠B,專門用來生產B型號的處理器 class FactoryB : public CoreFactory { public: SingleCore* CreateSingleCore() { return new SingleCoreB(); } MultiCore* CreateMultiCore() { return new MultiCoreB(); } };

?

轉載于:https://www.cnblogs.com/zf-blog/p/9120628.html

總結

以上是生活随笔為你收集整理的C++设计模式之工厂模式(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产综合视频 | av手机在线 | 国产精品午夜在线 | av夜夜| 国产女主播一区二区三区 | 欧美精品乱人伦久久久久久 | 亚洲精品天堂在线 | 色老头免费视频 | 日本免费高清一区二区 | 国产精品久久久久av | 国产伦理在线 | 中日韩精品在线 | 日韩一区二区在线观看视频 | 一区在线看| 精品动漫一区二区三区的观看方式 | 在线成人看片 | 亚洲a在线视频 | 天天撸天天操 | 在线观看视频日韩 | 欧美视频性 | 成人免费看毛片 | 国产一区二区中文字幕 | 性猛交xxxx乱大交孕妇印度 | 美国一区二区三区 | 性工作者十日谈 | 少妇高潮一区二区三区99刮毛 | 国产高清视频在线免费观看 | 日韩激情在线观看 | 欧美一区二区成人 | 欧美午夜网 | www,四虎 | 强伦轩人妻一区二区电影 | 欧洲亚洲一区二区 | 日本调教电影 | 超碰人人在线 | 成人免费在线 | 手机av在线看 | 国产精品破处 | 深夜福利在线免费观看 | 亚洲免费在线视频观看 | 久久成人综合 | 日韩精品在线视频观看 | 久久国产精品无码一区二区 | 在线观看毛片网站 | 国产良妇出轨视频在线观看 | 亚洲av无码国产精品久久 | 国产懂色av| 麻豆视频一区二区 | 青青草国产成人av片免费 | 电影《两个尼姑》免费播放 | 国产免费av片在线 | 国产超碰精品 | 久久精品一二三区 | 91国产丝袜播放在线 | 致命弯道8在线观看免费高清完整 | www.av黄色 | 黄色片在线免费观看 | 影音先锋在线视频 | 国产欧美精品一区二区在线播放 | 欧美乱大交xxxxx潮喷l头像 | 亚洲狼人综合 | 一区二区三区四区在线播放 | 女生喷水视频 | 欧美一级影院 | 韩国日本中文字幕 | 在线超碰av| 国产白嫩美女无套久久 | 91在线网站| 久久中文字幕国产 | 日本黄色网页 | 少妇日b | 欧美日韩免费观看一区=区三区 | www国产精品内射老熟女 | 淫羞阁av导航 | h片在线观看 | 麻豆md0049免费 | 日韩电影一区二区三区四区 | 日日摸夜夜添夜夜添高潮喷水 | 97超碰免费在线观看 | 538国产精品视频一区二区 | 黄瓜视频污在线观看 | 成人在线影片 | 五月天色站| 日韩黄色片子 | 日产av在线播放 | 亚洲图片二区 | 日韩中文字幕一区二区 | 亚洲最大黄色网址 | 亚洲视频网站在线观看 | 日日操日日操 | 国产伦精品一区二区三区妓女 | 久久久久区| 69av一区二区三区 | 51吃瓜网今日 | 狠狠躁夜夜躁人人爽天天高潮 | 国产青青在线 | 国产一极毛片 | 国产精品不卡一区二区三区 | 任你操精品视频 |