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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2_7 FlyweightMode 享元模式

發(fā)布時間:2024/4/11 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2_7 FlyweightMode 享元模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
// 定義:運用共享技術(shù)有效的支持大量細粒度的對象 // // 模式舉例:有錘子和鋸子等多種工具,需要錘子來把錘子, // 需要鋸子來把鋸子,再需要錘子還是上把錘子 // // 模式特點:唯一考慮程序運行性能的模式 // // 模式知識點:享元模式有內(nèi)蘊狀態(tài)和外蘊狀態(tài)之說,顧名思義 // 內(nèi)蘊狀態(tài)需要自己維護,外蘊狀態(tài)需要客戶端維護 // //#include<iostream> #include<string> #include<map> using namespace std;class Tool { public:virtual void use(string user, string work)=0;protected://內(nèi)蘊狀態(tài)string m_name;int m_size;int m_weight; };class Saw : public Tool { public:Saw(int size, int weight){m_size = size;m_weight = weight;m_name = "saw";}virtual void use(string user, string work){cout <<user<<" use "<<m_name<<" "<<work<<endl;} };class Hammer : public Tool { public:Hammer(int size, int weight){m_size = size;m_weight = weight;m_name = "hammer";}virtual void use(string user, string work){cout <<user<<" use "<<m_name<<" "<<work<<endl;} };//感覺這個工具箱做成單例就好了 class Toolbox { public:Tool * getTool(string name){auto tool = m_alltools.find(name);if(tool != m_alltools.end()){return (*tool).second;}else{if(name.compare("saw")==0){Tool* tool = new Saw(5,20);m_alltools["saw"] = tool;return tool;}else if(name.compare("hammer")==0){Tool* tool = new Hammer(3,10);m_alltools["hammer"] = tool;return tool;}}}private:map<string,Tool*> m_alltools; };int main() {//外蘊狀態(tài),由調(diào)用者維護string user = "xiao ming";string work = "ding ding zi";Toolbox * toolbox = new Toolbox();Tool * tool = toolbox->getTool("hammer");tool->use(user,work);return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的2_7 FlyweightMode 享元模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。