亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++設計模式之享元模式(Flyweight)

2020-05-23 13:34:58
字體:
來源:轉載
供稿:網友

享元模式顧名思義就是羽量級模式或者蠅級模式,形容體量小的應用,該模式主要的設計目的是為了迎合系統大量相似數據的應用而生,減少用于創建和操作相似的細碎對象所花費的成本。大量的對象會消耗高內存,享元模式給出了一個解決方案,即通過共享對象來減少內存負載。

作用

通過復用相同的對象來減少對象的創建數量,創建更小的對象組,并通過共享實現重用。通過歸類,將對象的屬性分為內蘊狀態和外蘊狀態。要創建具體的享元對象,我們需要創建一個享元工廠來統一管理對象的生成和輸出,享元工廠是實現享元模式的關鍵。

舉個例子,享元模式可以看成是一個工具箱,而享元對象就是工具箱內的具體的工具,我們在使用工具的時候,不必每回臨時的制造工具,而是直接從工具箱里找到工具進行使用,這樣就大大節約了制造工具的成本時間和工具占用的空間。

享元模式比較迷惑在于理解兩種狀態的分類,內蘊狀態是對象本身的屬性,在生成對象以后一般不會進行改變,比如工具中的屬性:名字、大小、重量等,還有就是我們一般需要一個關鍵性的屬性作為其區別于其他對象的key,如工具的話我們可以把名稱作為找到工具的唯一標識。

外蘊狀態是對象的外部描述,是每個對象的可變部分,比如對工具的使用地點、使用時間、使用人、工作內容的描述,這些屬性不屬于對象本身,而是根據每回使用情況進行變化的,這就需要制作成接口進行外部調用,而外蘊狀態的維護是由調用者維護的,對象內不進行維護。

類視圖

C++,設計模式,享元模式

實現

//Flyweightclass tool{public:  //內蘊狀態  string name;  int nSize;  int nWeight;public:  //外蘊狀態  virtual int used(string person, string work)=0;}//ConcreteFlyweightclass hammer : public tool{public:  hammer():name("hammer"){}  int used(string person, string work)  {    cout<< person <<"use"<<name<<"to" << work;  }}//ConcreteFlyweightclass screwdriver : public tool{  screwdriver():name("screwdriver"){}  int used(string person, string work)  {    cout<< person <<"use"<< name << " to" << work;  }}//ConcreteFlyweightclass saw : public tool{  saw():name("saw"){}  int used(string person, string work)  {    cout<< person <<"use"<< name <<"to" << work;  }}//FlyweightFactoryclass toolbox{public:  toolbox();  virtual ~toolbox()  {    map<string,tool*>::iterator it = m_tool.find(toolname);    for(it=m_tool.begin();it!=m_tool.end();it++)    {      delete it.second;    }  }  tool* GetTool(string toolname)  {    map<string,tool*>::iterator it = m_tool.find(toolname);    if(it != m_tool.end())    {      return (tool*) it.second;    }    else    {      tool* tooltemp= NULL;      if(toolname == "hammer")        tooltemp = new hammer();      else if(toolname == "screwdriver")        tooltemp = new screwdriver();      else if(toolname == "saw")        tooltemp = new saw();      if(tooltemp !=NULL)        m_tool.insert(make_pair<string,tool*>(toolname,tooltemp));      return tooltemp;    }  }private:  map<string,tool*> m_tool;}int main(){  //外蘊狀態 由調用者維護  string person1 = "zhangsan";  string person2 = "lisi";  string work1 = "make desk";  string work2 = "repair bike";  //生成工廠  toolbox tBox;  //獲取享元  tool* tool1 = tBox.GetTool("hammer");  tool1.used(person1,work1);  tool* tool2 = tBox.GetTool("screwdriver");  tool2.used(person2,work2);}

單享元(share)和復合享元(unshare)
復合享元也既是unshareFlyweight,其不再是單一的對象,而是一系列對象的組合,他們的關系由原來的一對一的關系,變成了一對多的關系。
舉例說明,如【DP】中比較經典的圍棋的例子,單享元模式下,我們對圍棋的顏色種類進行共享,再棋盤的工廠類中只需包含黑白兩顆棋子,就能完成對棋盤下棋的整個操作,而不用對每一個棋子進行操作。但是有一天需求增加了對勝負的要求,那么就需要對棋子的坐標進行記錄,對于黑白兩種顏色的棋子,相對應的就會有相同顏色棋子的坐標數組容器,like:map<string,vector<Point>> 這樣的結構。

應用場景

  • 需要創建大量對象時;
  • 大多數對象可以分為內蘊和外蘊狀態;
  • 應用程序需要使用多種對象,并且重復使用;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青在线视频一区二区三区| 国产亚洲精品综合一区91| 亚洲va欧美va国产综合剧情| 欧美激情精品在线| 成人亚洲欧美一区二区三区| 国产日韩欧美黄色| 精品国产91久久久久久老师| 亲子乱一区二区三区电影| 日韩精品中文字| 欧美乱人伦中文字幕在线| 精品在线观看国产| 国内精品久久久久影院 日本资源| 91精品久久久久久久久久| 国产精品成人观看视频国产奇米| 91精品视频一区| 精品国产一区二区三区久久狼5月| 国产日韩欧美夫妻视频在线观看| 国产精品免费久久久久影院| 久热99视频在线观看| 九九九热精品免费视频观看网站| 日韩精品中文字幕在线| 奇米一区二区三区四区久久| 精品久久久久久久久久久久| 午夜精品久久久久久久99热| 日本19禁啪啪免费观看www| 久久这里只有精品视频首页| 九九热精品视频国产| 精品无人区乱码1区2区3区在线| 亚洲自拍中文字幕| 中国china体内裑精亚洲片| 国模gogo一区二区大胆私拍| 国产色婷婷国产综合在线理论片a| 97久久久免费福利网址| 18性欧美xxxⅹ性满足| 欧美性猛交xxxxx水多| 成人免费淫片aa视频免费| 日韩国产欧美精品在线| 日韩中文字幕免费看| 深夜精品寂寞黄网站在线观看| 成人自拍性视频| 精品国产欧美成人夜夜嗨| 高潮白浆女日韩av免费看| 国产精品视频网| 丝袜亚洲另类欧美重口| 日韩免费看的电影电视剧大全| 成人h视频在线观看播放| 亚洲女人天堂成人av在线| 91久久精品久久国产性色也91| 欧美国产日韩一区| 国产精品国产三级国产专播精品人| 夜夜嗨av色综合久久久综合网| 欧美精品videossex88| 欧美日韩国产中文字幕| 亚洲第一色中文字幕| 成人免费视频xnxx.com| 亚洲一区二区在线| 91成人在线观看国产| 国产亚洲人成网站在线观看| 尤物精品国产第一福利三区| 日本欧美国产在线| 青青草原一区二区| 有码中文亚洲精品| 国产91精品久久久| 欧美成人国产va精品日本一级| 欧美一级电影免费在线观看| 日日噜噜噜夜夜爽亚洲精品| 92版电视剧仙鹤神针在线观看| 91精品国产综合久久久久久久久| 日韩动漫免费观看电视剧高清| 亚洲影视中文字幕| 欧美日韩加勒比精品一区| 中文字幕日韩综合av| 欧美日韩中文字幕日韩欧美| 日韩一级黄色av| 亚洲欧美中文日韩在线v日本| 国产精品免费一区二区三区都可以| 欧美天天综合色影久久精品| 久久久www成人免费精品张筱雨| 一区二区亚洲欧洲国产日韩| 91亚洲一区精品| 亚洲精品综合精品自拍| 久久影视电视剧凤归四时歌| 成人午夜激情免费视频| 亚洲国产精品美女| 日韩av黄色在线观看| 欧美成年人视频| 亚洲国产91精品在线观看| 亚洲资源在线看| 国产一区二区三区四区福利| 日本午夜精品理论片a级appf发布| 欧美老女人xx| 欧美国产日韩一区二区三区| 国产自产女人91一区在线观看| 在线观看国产精品日韩av| 久久精品国产成人精品| 日韩精品免费在线播放| 国产精品久久9| 国产日韩换脸av一区在线观看| 日韩欧美在线字幕| 精品动漫一区二区三区| 日本午夜在线亚洲.国产| 黄色精品在线看| 国产啪精品视频| 国产一区二区三区在线观看网站| 日韩精品久久久久久久玫瑰园| 精品人伦一区二区三区蜜桃网站| 亚洲精品一区二区网址| 欧美午夜性色大片在线观看| 精品久久久久久中文字幕大豆网| 国产精品永久免费在线| 亚洲第五色综合网| 日本人成精品视频在线| 狠狠躁夜夜躁人人爽天天天天97| 国产丝袜一区二区| 久久久国产一区| 国产精品吊钟奶在线| 日韩精品视频免费| 日韩在线中文视频| 国产欧美日韩中文字幕| 青青在线视频一区二区三区| 欧美成人性色生活仑片| 欧美激情视频一区二区三区不卡| 国产精品免费一区二区三区都可以| 亚洲高清福利视频| 91国语精品自产拍在线观看性色| 91视频九色网站| 国产精品爱久久久久久久| 福利一区视频在线观看| 久久久成人精品视频| 国产欧美一区二区三区在线看| 久久99热精品这里久久精品| 日韩在线精品一区| 日韩中文字幕在线视频播放| 国内精品一区二区三区| 国产精品丝袜久久久久久不卡| 国产一区二区三区久久精品| 曰本色欧美视频在线| 亚洲a级在线播放观看| 欧美成人激情视频| 一本色道久久综合狠狠躁篇怎么玩| 亚洲午夜女主播在线直播| 成人网在线视频| 亚洲精品456在线播放狼人| 中文字幕欧美精品日韩中文字幕| 欧美性视频网站| 欧美精品在线视频观看| 国产精品羞羞答答| 精品国产乱码久久久久久虫虫漫画| 久久精品99国产精品酒店日本| 91精品久久久久久久久久久久久久| 国产精品女主播视频| 欧美夫妻性生活视频| 国产精品精品一区二区三区午夜版| 91精品久久久久久久久久入口| 久久夜色精品亚洲噜噜国产mv| 国产精品黄色av| 中文字幕一区电影| 在线观看久久av| 日本国产一区二区三区| xvideos成人免费中文版| 国产欧美精品在线| 欧美日韩午夜剧场| 亚洲在线视频观看| 热99精品里视频精品|