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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

23种设计模式C++源码与UML实现--工厂模式

發布時間:2025/3/15 c/c++ 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 23种设计模式C++源码与UML实现--工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

工廠模式

工廠方法模式同樣屬于類的創建型模式,又被稱為多態工廠模式。工廠方法的意義是定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類當中。

核心工廠類不在負責產品的創建,這樣核心類成為一個抽象工廠角色,僅負責具體工廠子類必須實現的接口,這樣進一步抽象化的好處就是使得工廠方法模式可以使系統不再修改具體工廠角色的情況下引進新的產品。

模式中包含的角色極其職責

抽象工廠角色

工廠方法的核心,任何工廠類都必須實現這個接口

具體工廠角色

具體工廠是抽象工廠的一個實現,負責實例化產品對象。

抽象角色

工廠方法模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。

具體產品

工廠方法模式所創建的具體實例對象

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5uoWJEma-1602171138325)(picture/image-20201008225409185.png)]

工廠模式和簡單工廠模式比較

工廠模式與簡單工廠模式在結構上的不同不是很明顯,工廠方法類的核心是一個抽象工廠類,而簡單工廠模式把核心放在一個具體的類上。

工廠方法模式之所以有一個別名叫多態型工廠模式是因為具體工廠類都是共同的接口或者有共同的抽象父類。

當系統擴展需要添加新的產品對象時,僅僅需要添加一個具體對象以及一個具體工廠對象,原有工廠對象不需要進行任何修改,也不需要修改客戶端,很好的符合了 - 開放封閉-原則。而簡單工廠模式再添加新產品對象后不得不修改工廠方法,擴展性不好。工廠模式退化后可演變成簡單工廠模式。

開放-封閉,通過添加代碼的方式,不是通過修改代碼的方式完成功能的增強

特點 :不需要修改源代碼就可以實現新工能的添加 💛

源碼實現:

#include <iostream> #include <string>using namespace std;// 抽象類中定義子類中需要實現的功能,也就是限定了子類必須實現的一些函數 class Fruit { public:virtual void GetFruit(void) = 0;virtual ~Fruit(void){} };class Banana : public Fruit { public:virtual void GetFruit(void){cout << "I'm banana." << endl;} };class Apple : public Fruit { public:virtual void GetFruit(void){cout << "I'm apple." << endl;} };class AbstructFactory { public:virtual Fruit *CreateProduct(void) = 0;// 這里析構函數使用虛函數的原因是因為,只有父類中析構函數使用虛函數,// 多態時才會從子類析構函數一直調用到基類結束,否則只會調用父類的不會調用子類的析構函數virtual ~AbstructFactory(void){} };class BananaFactory : public AbstructFactory { public:virtual Fruit *CreateProduct(void){return new Banana;} };class AppleFactory : public AbstructFactory { public:virtual Fruit *CreateProduct(void){return new Apple;} };/*** 后期產品擴展*/class Peer : public Fruit { public:virtual void GetFruit(void){cout << "I'm peer." << endl;} };class PeerFactory : public AbstructFactory { public:virtual Fruit *CreateProduct(){return new Peer;}};int main(int argc, char const *argv[]) {AbstructFactory *factory = NULL;Fruit *fruit = NULL;// 制造香蕉factory = new BananaFactory;fruit = factory->CreateProduct();fruit->GetFruit();delete fruit;delete factory;factory = new AppleFactory;fruit = factory->CreateProduct();fruit->GetFruit();delete fruit;delete factory;// 前期系統穩定之后,后期擴展cout << "extern" << endl;factory = new PeerFactory;fruit = factory->CreateProduct();fruit->GetFruit();delete fruit;delete factory;cout << "simple factory test" << endl;return 0; }

編譯之后執行結果:

I'm banana. I'm apple. extern I'm peer. simple factory test

總結

以上是生活随笔為你收集整理的23种设计模式C++源码与UML实现--工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产剧情自拍 | 国产成人综合自拍 | 999国内精品永久免费视频 | 少妇性色av | αv在线 | 欧美一区二区三区久久 | 五月天国产精品 | 毛茸茸日本熟妇高潮 | 日本熟女一区二区 | 日韩国产亚洲欧美 | 毛片基地在线观看 | www.99色| jizz美女| 深夜视频在线观看 | 人成在线| 丰满少妇被猛烈进入高清播放 | 精品视频一区二区三区四区 | 久草网在线| 亚洲成人一级片 | 九九九九精品 | 在线免费观看黄色 | 日本黄色不卡视频 | 久久久久久久亚洲 | 91蜜桃臀久久一区二区 | 亚洲国产91 | 国产免费又粗又猛又爽 | 91av不卡| 捆绑束缚调教 | 日本熟妇色xxxxx日本免费看 | 婷婷影院在线观看 | 国产欧美一区二区三区在线看蜜臀 | 午夜性生活视频 | 超碰免费在线97 | 国产色视频一区二区三区qq号 | 国产成人av一区二区三区不卡 | 国产欧美日韩专区发布 | 亚洲最大网 | 在线观看www视频 | 老司机在线永久免费观看 | 日韩字幕在线观看 | 国产黄 | 精品在线免费观看 | 伊人动漫 | 国内精品免费视频 | 91在线播放国产 | 99视频在线观看视频 | 国产99久久九九精品无码免费 | 国产午夜在线播放 | 999精品国产 | 蜜桃导航-精品导航 | 美女色综合 | 黄瓜视频91 | 国产精品无码久久久久 | 精品小视频在线观看 | 国产成人av一区 | 欧美性猛交aaaa片黑人 | 91porny丨首页入口在线 | 日韩r级在线观看 | 少妇久久久久久被弄高潮 | 91国内在线视频 | 噜噜噜噜噜色 | 99久久国 | 丝袜一区二区三区四区 | 婷婷激情小说网 | 久久六六 | 自拍视频在线观看 | 国产福利视频导航 | 国模精品视频一区二区 | 久久久久香蕉视频 | 北条麻妃av在线 | 性做久久久久久免费观看欧美 | 一区二区不卡在线 | 国产在线网| 欧美操大逼 | 午夜影院试看 | 亚洲成在线| 亚洲精品免费在线播放 | 青青草自拍偷拍 | 免费一级黄色大片 | 久久国产色av | 黄色网www| 久久久久九九九九 | 精品蜜桃av| 日本视频二区 | 亚洲三级在线免费观看 | www.国产.com | 久久久综合av | 成人精品网址 | 亚洲精品视频国产 | 国产成人久久婷婷精品流白浆 | 中文字幕精品三区 | 奇米影视一区二区三区 | 免费看黄在线网站 | 婷婷伊人综合中文字幕 | 久久精品这里只有精品 | 色成人亚洲 | 天天草夜夜 | 欧美日韩五月天 | 99情趣网 |