读书人

设计方式学习-享元模式

发布时间: 2012-12-28 10:29:04 作者: rapoo

设计模式学习-----享元模式

享元模式

  GOOD:运用共享技术有效地支持大量细粒度的对象(对于C++来说就是共用一个内存块啦,对象指针指向同一个地方)。

如果一个应用程序使用了大量的对象,而这些对象造成了很大的存储开销就应该考虑使用。

还有就是对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用较少的共享对象取代多组对象,此时可以考虑使用享元。

设计方式学习-享元模式

#include <iostream>#include <string>#include <vector>using namespace std;//抽象的网站class WebSite{public:virtual void Use()=0;};//具体的共享网站class ConcreteWebSite : public WebSite{private:string name;public:ConcreteWebSite(string strName){name = strName;}virtual void Use(){cout<<"网站分类:"<<name<<endl;}};//不共享的网站class UnShareWebSite : public WebSite{private:string name;public:UnShareWebSite(string strName){name = strName;}virtual void Use(){cout<<"不共享的网站:"<<name<<endl;}};//网站工厂类,用于存放共享的WebSite对象class WebFactory{private:vector<WebSite*> websites;public:WebSite* GetWeb(){vector<WebSite*>::iterator p = websites.begin();return *p;}WebFactory(){websites.push_back(new ConcreteWebSite("测试"));}};//客户端int main(){WebFactory* f= new WebFactory();WebSite* ws= f->GetWeb();ws->Use();WebSite* ws2 = f->GetWeb();ws2->Use();//不共享的类WebSite* ws3 = new UnShareWebSite("测试");ws3->Use();return 0;}//转载请注明,文章来自:http://blog.csdn.net/windows_nt


读书人网 >软件开发

热点推荐