国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php框架 > 框架设计 > 享元模式

享元模式

来源:程序员人生   发布时间:2015-01-05 08:30:33 阅读次数:3043次

1,我们做产品的时候,有很多产品是大同小异,所以我们细分化模块化是为了共用,而享元模式就是

2,代码很简单,看注视很清楚

// 享元模式.cpp : 定义控制台利用程序的入口点。 // //公共的地方,仅仅需要1个对象在程序中, //放在了map 中,由于map特性1个key 只能有1个value瞒住享元模式要求 //最大用途,内存优化,目的是下降程序内存使用 #include "stdafx.h" #include <iostream> #include <string> #include <map> using namespace std; class WebSite{ public: virtual void use() = 0; }; class ConcreteWebSite :public WebSite{ public: string name; public: ConcreteWebSite(string name) :name(name){} void use(){ cout << name << "web site" << endl; } }; class WebSiteFoctory{ private: map<string , WebSite*> wf; public: WebSite *getWebSiteFoctory(string key){ if (wf.find(key) == wf.end()) { wf[key] = new ConcreteWebSite(key); } return wf[key]; } int getWebSiteCount(){ return wf.size(); } }; int _tmain(int argc, _TCHAR* argv[]) { WebSiteFoctory *factory = new WebSiteFoctory(); WebSite *ws = factory->getWebSiteFoctory("good"); ws->use(); WebSite *ws1 = factory->getWebSiteFoctory("nice"); ws1->use(); WebSite *ws2 = factory->getWebSiteFoctory("very done"); ws2->use(); cout << "number of factory:"<<factory->getWebSiteCount() << endl; cin.get(); return 0; }



生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生