享元模式
来源:程序员人生 发布时间: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;
}
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠