c++设计模式之享元模式
来源:互联网 发布:禁用javascript脚本 编辑:程序博客网 时间:2024/05/20 19:28
#include <IOSTREAM>#include <string>#include <VECTOR>using namespace std;class Flyweight{public:virtual void Operation(const string &extrinsicState){};string GetInitrinsicState(){return this->_intrinsicState;};protected:Flyweight(string intrinsicState){this->_intrinsicState = intrinsicState;}private: string _intrinsicState;};class ConcreteFlyweight:public Flyweight{public:ConcreteFlyweight(string intrinsicState):Flyweight(intrinsicState){cout<<"ConcreteFlyweighjt Build....."<<intrinsicState<<endl;}//相关操作void Operation(const string &extrinsicState){cout<<"内部状态:"<<this->GetInitrinsicState()<<"外部状态:"<<extrinsicState<<endl;}};class FlyweightFactory{public:FlyweightFactory(){}Flyweight *GetFlyweight(const string&key){vector<Flyweight*>::iterator it = _fly.begin();for(;it!=_fly.end();it++){//找到了就一起用if((*it)->GetInitrinsicState() == key){cout<<"alreay created by user..."<<endl;return *it;}}Flyweight *fn = new ConcreteFlyweight(key);//没有找到就创建_fly.push_back(fn);return fn;}private:vector<Flyweight*> _fly;};void main(){FlyweightFactory *fc = new FlyweightFactory();//创建工厂Flyweight*fw1 = fc->GetFlyweight("hello");Flyweight*fw2 = fc->GetFlyweight("world!");Flyweight*fw3 = fc->GetFlyweight("hello");//以为hello已经被创建,所以会打印出alreay create by userfw1->Operation("test1");}
- C#--设计模式之享元模式
- 设计模式(C#)之享元模式(Flyweight Pattern)
- C语言设计模式:享元模式
- 设计模式之享元
- 设计模式之享元
- 设计模式 之 享元
- 设计模式之享元
- 设计模式之享元
- 设计模式之Flyweight享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- java设计模式之享元模式
- 【设计模式】之 Flyweight享元模式
- 设计模式之享元模式
- SVN解除控制
- web课答辩感想
- 黑马程序员_学习日记35_529基础加强(封装、继承、多态)
- Django开源项目mezzanine迁移SAE分享
- 控制文件包含的内容
- c++设计模式之享元模式
- 复习笔记10 switch 编译器优化的两种方式 和if的效率对比
- 天秤座女生的性格
- ubuntu搭建php开发环境
- 用Au3 发 邮件
- 手动创建数据库
- 动态规划——最小投资 小程序
- javaAPI_2
- 基于关系数据库的数据仓库星形模式下维使用原则的研究与探索