#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <iterator>
#include <algorithm> using namespace std; class User
{
public:
User(string strName): m_strName(strName)
{ } string GetName() const
{
return m_strName;
} private:
string m_strName;
}; class WebSite
{
public:
virtual void Use(const User* stUser) = ; }; class ConcreteWebSite: public WebSite
{
public:
ConcreteWebSite(string strName): m_strName(strName)
{ } virtual void Use(const User* stUser)
{
cout<< "网站分类:"<< m_strName<< "\t 用户:"<< stUser->GetName()<< endl;
} private:
string m_strName; }; class WebSiteFactory
{ public:
WebSite* GetWebSiteCategory(string strKey)
{
if (mapFlyWeights.find(strKey) != mapFlyWeights.end())
{
return mapFlyWeights[strKey];
}
else
{
mapFlyWeights.insert(pair<string, WebSite*>(strKey, new ConcreteWebSite(strKey)));
return mapFlyWeights[strKey];
}
} private:
map<string, WebSite*> mapFlyWeights;
}; int main(int argc, char* argv[])
{
WebSiteFactory* f = new WebSiteFactory(); WebSite* fx = f->GetWebSiteCategory("产品展示");
fx->Use(new User("小菜")); WebSite* fy = f->GetWebSiteCategory("产品展示");
fy->Use(new User("大鸟")); WebSite* fz = f->GetWebSiteCategory("博客");
fz->Use(new User("xxxxx")); WebSite* fm = f->GetWebSiteCategory("博客");
fm->Use(new User("OOOOOO")); return ;
} [root@ ~/learn_code/design_pattern/22_fly_weight]$ ./flyWeight
网站分类:产品展示 用户:小菜
网站分类:产品展示 用户:大鸟
网站分类:博客 用户:xxxxx
网站分类:博客 用户:OOOOOO

设计模式——享元模式(C++实现)的更多相关文章

  1. 8. 星际争霸之php设计模式--享元模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  2. C++设计模式——享元模式

    本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.如果这篇文章对你有帮助,你可以请我喝杯咖啡. » 本文链接:http:// ...

  3. java设计模式——享元模式

    一. 定义与类型 定义:提供了减少对象数量从而改善应用所需的对象结构的方式,运用共享技术有效地支持大量细粒度的对象 类型:结构性 二. 使用场景 (1)  常常应用于系统底层的开发,以便解决系统的性能 ...

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

    Java设计模式 - 享元模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...

  5. [工作中的设计模式]享元模式模式FlyWeight

    一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...

  6. JAVA 设计模式 享元模式

    用途 享元模式 (Flyweight) 运用共享技术有效地支持大量细粒度的对象. 享元模式是一种结构型模式. 结构

  7. 深入浅出设计模式——享元模式(Flyweight Pattern)

    模式动机 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数.当对象数量太多时,将导致运行代价过高,带来性能下降等问题.享元模式正是为解决这一类问题而诞生 ...

  8. Java设计模式-享元模式(Flyweight)

    享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用. FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查 ...

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

    享元模式 顾名思义:共享元对象.如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象. 享元模式是为数不多的.只为提升系统性能而生的设计模式.它的主要作用就 ...

  10. 结合JDK源码看设计模式——享元模式

    前言 在说享元模式之前,你一定见到过这样的面试题 public class Test { public static void main(String[] args) { Integer a=Inte ...

随机推荐

  1. git一键部署代码到远程服务器(linux)(采坑总结)

    原来一直使用FileZilla来代码部署,去年使用git,代码版本管理,真TM好用,一起回顾下历程! 一. 代码部署方式及思路: 1. 使用FTP/SFTP工具,上传代码 2. git人工部署.1. ...

  2. RegexKitLite编译报错

    报错如下:  Undefined symbols for architecture i386: "_uregex_open", referenced from: _rkl_getC ...

  3. mongodb Decimal Spring data mongodb Decimal128 SpringMvc 序列化字符串 json converter

    Mongodb 3.4 就开始支持Decimal 类型,解决double的精度问题,但是不太好用,MapReduce的时候Array.sum 也不能计算 Decimal.比较坑,但是聚合可以用 Spr ...

  4. 情景linux--如何优雅地退出telnet

    情景linux--在脚本中如何优雅地退出telnet 情景 telnet命令是TELNET协议的用户接口,它支持两种模式:命令模式和会话模式.虽然telnet支持许多命令,但大部分情况下,我们只是使用 ...

  5. web前端开发工程师工资多少

      做web前端开发工程师工资高不高?下面千锋小编为大家分析一下:作为目前互联网行业中的主流技术,Web前端一直是占有重要的地位.尤其是近年来HTML5技术的突飞猛进,使Web前端技术有了更好的发展. ...

  6. MySQL参数log_bin_trust_function_creators介绍

    MySQL的有个参数log_bin_trust_function_creators,官方文档对这个参数的介绍.解释如下所示: log_bin_trust_function_creators Comma ...

  7. TI Davinci DM6446开发攻略——UBL移植

     UBL的程序设计,相对UBOOT.KERNEL.ROOTFS.设备驱动.DSP开发来说,还是比较简单.我们先从DAVINCI的启动说起,了解UBL在DAVIN系统中的位置和作用.对于固件程序烧写在N ...

  8. 深入理解StrongReference,SoftReference, WeakReference和PhantomReference

    Java 中一共有 4 种类型的引用 : StrongReference. SoftReference. WeakReference 以及 PhantomReference (传说中的幽灵引用 呵呵) ...

  9. The currently displayed page contains invalid values.

    1 错误描述 2 错误原因 3 解决办法

  10. Jquery常用操作:checkbox、select取值,radio、checkbox、select选中及其相关

    常用Jquery操作:checkbox取值.select取值.radio选中.checkbox选中.select选中及其相关: 1.影藏页面元素 使用jquery真的很方便,比如要控制div的显示与隐 ...