设计模式--享元模式实现C++
/*********************************
*设计模式--享元模式实现
*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++相关推荐
- Python设计模式-享元模式
Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...
- 10-Python与设计模式--享元模式
10-Python与设计模式--享元模式 一.网上咖啡选购平台 假设有一个网上咖啡选购平台,客户可以在该平台上下订单订购咖啡,平台会根据用户位置进行线下配送.假设其咖啡对象构造如下: class Co ...
- 【设计模式】Java设计模式 - 享元模式
[设计模式]Java设计模式 - 享元模式
- Unity设计模式——享元模式(附代码)
Unity设计模式--享元模式(附源码) 享元Flyweight模式是什么 享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的 ...
- 第二十二章 Caché 设计模式 享元模式
文章目录 第二十二章 Caché 设计模式 享元模式 定义 优点 使用场景 结构图 描述 完整示例 实体类 抽象享元角色 实现享元角色 享元工厂 调用 思考 第二十二章 Caché 设计模式 享元模式 ...
- JavaScript设计模式-享元模式
JavaScript设计模式-享元模式 概念 例子 内部状态与外部状态 享元模式的通用结构 例子 总结 github仓库地址:点击 [设计模式例子](https://github.com/fanhua ...
- JAVA 设计模式 享元模式
用途 享元模式 (Flyweight) 运用共享技术有效地支持大量细粒度的对象. 享元模式是一种结构型模式. 结构 图-享元模式结构图 Flyweight : 它是所有具体享元类的超类或接口,通过这个 ...
- java设计模式---享元模式
Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己 对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广 泛,遵循一定的编程模式,才能使自己的 ...
- PHP设计模式——享元模式
声明:本系列博客参考资料<大话设计模式>,作者程杰. 享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件:它适合用于只是因重复而导致使用无法令人接受的大量内存的 ...
最新文章
- 一周焦点 | Dota2团战击溃AI;不如跳舞!伯克利最新人体动作迁移研究
- thinkPHP学习笔记(2)
- 谁是2020年最强Python库?年度Top10出炉
- keil mdk5安装
- java string封装类_java中八种基本数据类型以及它们的封装类,String类型的一些理解...
- Citrix VDI攻略之四:PVS安装及配置
- 反序列化 还是记一下吧
- NSTimer 与 Run loop Modes
- javascript 运算符优先级
- wget下载一个目录下的文件
- 关于get_magic_quotes_gpc()函数
- java代码启动spring_javascript - 从JavaScript调用Java代码( Spring 启动)
- hibernate Day1 案例代码
- 基于android p的miui,小米8青春版终于迎来基于AndroidP的MIUI10系统,米粉欢呼
- OpenEuler编译、安装与挂载f2fs文件系统
- 苹果的教育优惠怎么弄_京东苹果自营如何使用教育优惠!
- CSDN BLOG技术专家群工作平台发布公告
- 如何更好的保护个人信息
- 关于syslog4j写syslogd服务器的参考代码
- win 2016 ssh_【Win】Print Conductor 全能批量打印工具兼容所有打印机