用例:

//flyweight.cpp
//享元模式:运用共享技术有效地支持大量细粒度对象。

#include "gtest/gtest.h"
#include <map>class Flyweight
{
public:Flyweight() {}virtual ~Flyweight() {}virtual int Operation() = 0;
};class ConcreteFlyweight1 : public Flyweight
{
public:ConcreteFlyweight1() {}virtual ~ConcreteFlyweight1() {}int Operation(){return 1;}
};class ConcreteFlyweight2 : public Flyweight
{
public:ConcreteFlyweight2() {}virtual ~ConcreteFlyweight2() {}int Operation(){return 2;}
};class FlyweightFactory
{
public:FlyweightFactory(){flyweight['1'] = new ConcreteFlyweight1;flyweight['2'] = new ConcreteFlyweight2;}virtual ~FlyweightFactory() {delete flyweight['1'];delete flyweight['2'];}Flyweight* GetFlyweight(char key){return flyweight[key];}private:std::map<char,Flyweight*> flyweight;
};TEST(Flyweight,flyweight)
{FlyweightFactory* factory = new FlyweightFactory();Flyweight* f1 = factory->GetFlyweight('1');EXPECT_EQ(1,f1->Operation());Flyweight* f2 = factory->GetFlyweight('2');EXPECT_EQ(2,f2->Operation());}

转载于:https://www.cnblogs.com/TheImportanceOfLiving/p/8229047.html

设计模式10——flyweight模式相关推荐

  1. 设计模式之Flyweight模式(笔记)

    设计模式之Flyweight模式(笔记) 享元模式:运用共享技术有效地支持大量细粒度的对象. 适用场合:假设一个应用程序适用了大量的对象.而大量的这些对象造成了非常大的存储开销时就应该考虑使用. 首先 ...

  2. 如何让孩子爱上设计模式 ——10.桥接模式(Bridge Pattern)

    如何让孩子爱上设计模式 --10.桥接模式(Bridge Pattern) 标签: 设计模式初涉 我有故事,你有酒吗?这年头写个技术文不讲个故事都不行,行,我讲: 还有发现很多的技术博文都开始有喜欢往 ...

  3. 设计模式(10)-----模板方法模式

    模板方法模式(Template Method) 定义 定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. UML类图 例子 ...

  4. JavaScript设计模式-10.工厂模式实例xhr

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 < ...

  5. 组合模式_[设计模式]10.组合模式

    组合模式,也叫"部分整体模式",它把相似的对象组合成树形结构的一个整体.于是,只需一个代表,我们就能继续访问与之相关的同族对象. 模式卡片 模式UML图 七个例子 部门里人很多,大 ...

  6. JS设计模式——10.门面模式

    门面模式 这是一种组织性的模式,它可以用来修改类和对象的接口,使其更便于使用.它可以让程序员过得更轻松,使他们的代码变得更容易管理. 门面模式有两个作用: 简化类的接口 消除与使用她的客户代码之间的耦 ...

  7. 设计模式(10)——策略模式

    策略模式 一. 概述 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户端. 二. 模式解读 2.1 策略模式的一般化类图 2.2 模式中的角色 2.1 ...

  8. 设计模式(10)----策略模式

    策略模式 一. 概述 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户端. 二. 模式解读 2.1 策略模式的一般化类图 2.2 模式中的角色 2.1 ...

  9. 每日学一个设计模式10——策略模式

    策略模式(整体地替换算法) 用处 整体替换算法,提高扩展性. 角色 Strategy(策略) 该角色负责决定实现策略所必须地方法(API). ConcreteStrategy(具体的策略) 该角色负责 ...

最新文章

  1. 怎么改变github的用户名字,身份?
  2. 3d geometric model website http://www.cse.ohio-state.edu/~tamaldey/
  3. 开源备份软件 oracle,oracle备份和恢复
  4. Airflow 中文文档:实验性 Rest API
  5. 阿里巴巴Java开发手册终极版v1.3.0
  6. [UE4]函数和事件的区别
  7. oracle 常用索引分析,使用原则和注意事项
  8. 测试日照强度的软件,日照分析软件FastSUN - 飞时达软件
  9. Revit二次开发——选集
  10. win10运行python没有硬编码器_windows下关于python的编解码问题
  11. 【机器学习/MachineLearning】相关基本概念2——归纳,演绎,溯因法
  12. Symbol Type Viewer Version 1.0.0.3 (beta) by Lionel d'Hauenens
  13. Citespace安装【Version Check】Your version‘s status cannot be verified due to a network connection issue
  14. 手机怎么用外嵌字幕_剪映教程大全:剪映加字幕、设置封面、变速等教程详解!...
  15. poj 2152 Fire - 经典树形dp
  16. SparkRDD函数详解
  17. AutoResetEvent 与 ManualResetEvent区别
  18. 丝网印刷的作用原理及异常分析
  19. 大数据技术是什么专业?前景如何
  20. A-LEVEL经济知识点讲解:国际收支的结构

热门文章

  1. [转]启动Tomcat提示:指定的服务未安装
  2. centos7安装redis3.2.5
  3. PHP通过DOM操作XML
  4. 对Android GPS获取位置信息的新研究.
  5. 如何确定SharePoint 2007的一次增量爬网会处理多少条更新呢?
  6. 用iptable简单的给web服务器做安全
  7. 高校复试计算机英语文献翻译,专业文献英语翻译复试.pdf
  8. 欢迎使用CSDN-markdown编辑器1
  9. 模型压缩的开源项目工具
  10. Django实战之开发面向用户的界面