/*********************************
*设计模式--享元模式实现
*C++语言
*Author:WangYong
*Blog:http://www.cnblogs.com/newwy
********************************/
#include <iostream>
#include <cassert>
#include <vector>
#include <string>
using namespace std;
class Flyweight
{public:virtual ~Flyweight(){}virtual void Operation(const string & extrinsicState){}string GetIntrinsicState(){return this->_intrinsicState;}protected:Flyweight(string intrinsicState){this->_intrinsicState = _intrinsicState;}private:string _intrinsicState;
};
class ConcreteFlyweight:public Flyweight
{public:ConcreteFlyweight(string intrinsicState):Flyweight(intrinsicState){cout<<"ConcreteFlyweight Build ...."<<intrinsicState<<endl;}~ConcreteFlyweight(){}void Operation(const string & extrinsicState){cout<<"ConcreteFlyweight:内蕴"<<this->GetIntrinsicState()<<"ConcreteFlyweight:外蕴"<<extrinsicState<<endl;}
};
class FlyweightFactory
{public:FlyweightFactory(){}~FlyweightFactory(){}Flyweight * GetFlyweight(const string &key){vector<Flyweight *>::iterator it = _fly.begin();for(;it != _fly.end(); it++){if( (*it)->GetIntrinsicState() == key)cout<<"already created by users..."<<endl;return *it;}Flyweight *fn = new ConcreteFlyweight(key);_fly.push_back(fn);return fn;    }private:vector<Flyweight*> _fly;
};
int main()
{FlyweightFactory *fc = new FlyweightFactory();Flyweight * fw1 = fc->GetFlyweight("hello");Flyweight * fw2 = fc->GetFlyweight("world!");Flyweight * fw3 = fc->GetFlyweight("hello");
}

转载于:https://www.cnblogs.com/newwy/archive/2010/10/18/1855224.html

设计模式--享元模式实现C++相关推荐

  1. Python设计模式-享元模式

    Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...

  2. 10-Python与设计模式--享元模式

    10-Python与设计模式--享元模式 一.网上咖啡选购平台 假设有一个网上咖啡选购平台,客户可以在该平台上下订单订购咖啡,平台会根据用户位置进行线下配送.假设其咖啡对象构造如下: class Co ...

  3. 【设计模式】Java设计模式 - 享元模式

    [设计模式]Java设计模式 - 享元模式

  4. Unity设计模式——享元模式(附代码)

    Unity设计模式--享元模式(附源码) 享元Flyweight模式是什么 享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的 ...

  5. 第二十二章 Caché 设计模式 享元模式

    文章目录 第二十二章 Caché 设计模式 享元模式 定义 优点 使用场景 结构图 描述 完整示例 实体类 抽象享元角色 实现享元角色 享元工厂 调用 思考 第二十二章 Caché 设计模式 享元模式 ...

  6. JavaScript设计模式-享元模式

    JavaScript设计模式-享元模式 概念 例子 内部状态与外部状态 享元模式的通用结构 例子 总结 github仓库地址:点击 [设计模式例子](https://github.com/fanhua ...

  7. JAVA 设计模式 享元模式

    用途 享元模式 (Flyweight) 运用共享技术有效地支持大量细粒度的对象. 享元模式是一种结构型模式. 结构 图-享元模式结构图 Flyweight : 它是所有具体享元类的超类或接口,通过这个 ...

  8. java设计模式---享元模式

    Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己 对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广 泛,遵循一定的编程模式,才能使自己的 ...

  9. PHP设计模式——享元模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件:它适合用于只是因重复而导致使用无法令人接受的大量内存的 ...

最新文章

  1. 一周焦点 | Dota2团战击溃AI;不如跳舞!伯克利最新人体动作迁移研究
  2. thinkPHP学习笔记(2)
  3. 谁是2020年最强Python库?年度Top10出炉
  4. keil mdk5安装
  5. java string封装类_java中八种基本数据类型以及它们的封装类,String类型的一些理解...
  6. Citrix VDI攻略之四:PVS安装及配置
  7. 反序列化 还是记一下吧
  8. NSTimer 与 Run loop Modes
  9. javascript 运算符优先级
  10. wget下载一个目录下的文件
  11. 关于get_magic_quotes_gpc()函数
  12. java代码启动spring_javascript - 从JavaScript调用Java代码( Spring 启动)
  13. hibernate Day1 案例代码
  14. 基于android p的miui,小米8青春版终于迎来基于AndroidP的MIUI10系统,米粉欢呼
  15. OpenEuler编译、安装与挂载f2fs文件系统
  16. 苹果的教育优惠怎么弄_京东苹果自营如何使用教育优惠!
  17. CSDN BLOG技术专家群工作平台发布公告
  18. 如何更好的保护个人信息
  19. 关于syslog4j写syslogd服务器的参考代码
  20. win 2016 ssh_【Win】Print Conductor 全能批量打印工具兼容所有打印机

热门文章

  1. bcrypt的简单使用
  2. javascript --- 文件上传即时预览 闭包实现多图片即时预览
  3. Python 函数的执行流程-函数递归-匿名函数-生成器
  4. 【设计模式】单例模式 Singleton Pattern
  5. 解决mac osx下pip安装ipython权限的问题
  6. 互联网企业安全高级指南3.6 需要自己发明安全机制吗
  7. linux下解压.tar.bz2文件
  8. 一条命令解决系统N多故障
  9. 红外线摄像机的选择与使用及原理
  10. 【数据库学习笔记】——cursor游标对象