享元模式
來源:程序員人生 發布時間:2015-01-05 08:30:33 閱讀次數:3273次
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;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈