享元模式
來源:程序員人生 發(fā)布時(shí)間:2015-01-05 08:30:33 閱讀次數(shù):3284次
1,我們做產(chǎn)品的時(shí)候,有很多產(chǎn)品是大同小異,所以我們細(xì)分化模塊化是為了共用,而享元模式就是
2,代碼很簡(jiǎn)單,看注視很清楚
// 享元模式.cpp : 定義控制臺(tái)利用程序的入口點(diǎn)。
//
//公共的地方,僅僅需要1個(gè)對(duì)象在程序中,
//放在了map 中,由于map特性1個(gè)key 只能有1個(gè)value瞞住享元模式要求
//最大用途,內(nèi)存優(yōu)化,目的是下降程序內(nèi)存使用
#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;
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)