设计模式——享元模式(C++实现)

#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++实现)的更多相关文章
- 8. 星际争霸之php设计模式--享元模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- C++设计模式——享元模式
本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.如果这篇文章对你有帮助,你可以请我喝杯咖啡. » 本文链接:http:// ...
- java设计模式——享元模式
一. 定义与类型 定义:提供了减少对象数量从而改善应用所需的对象结构的方式,运用共享技术有效地支持大量细粒度的对象 类型:结构性 二. 使用场景 (1) 常常应用于系统底层的开发,以便解决系统的性能 ...
- 【设计模式】Java设计模式 - 享元模式
Java设计模式 - 享元模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...
- [工作中的设计模式]享元模式模式FlyWeight
一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...
- JAVA 设计模式 享元模式
用途 享元模式 (Flyweight) 运用共享技术有效地支持大量细粒度的对象. 享元模式是一种结构型模式. 结构
- 深入浅出设计模式——享元模式(Flyweight Pattern)
模式动机 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数.当对象数量太多时,将导致运行代价过高,带来性能下降等问题.享元模式正是为解决这一类问题而诞生 ...
- Java设计模式-享元模式(Flyweight)
享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用. FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查 ...
- java设计模式---享元模式
享元模式 顾名思义:共享元对象.如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象. 享元模式是为数不多的.只为提升系统性能而生的设计模式.它的主要作用就 ...
- 结合JDK源码看设计模式——享元模式
前言 在说享元模式之前,你一定见到过这样的面试题 public class Test { public static void main(String[] args) { Integer a=Inte ...
随机推荐
- 一、Python介绍
Python 是一门什么样的语言? python是一门动态解释性的强类型定义语言. 编程语言主要从以下几个角度为进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言,每个分类代 ...
- Golang http 服务器
package main import ( "net/http" "fmt" ) func main() { app := http.NewServeMux() ...
- (2018干货系列三)最新PHP学习路线整合
怎么学PHP PHP是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域. 菜鸟到大神,一步到位,正式开启干货模式: PHP初级开发工程师 ...
- accordion 分类
<!--accordion--><h1>accordion 分类</h1><div id="accordionId" class=&quo ...
- webpack入门宝典
前提摘要 本文是经过二天自己学习总结出来的一些心得,本文是在最新版的webpack4x的基础上进行配置的(听说webpack4x比以往改变都很大有些插件可能有问题).如果你以前没怎么接触过Webpac ...
- Windows平台的PHP之开启COM配置
Windows平台的PHP如果未配置COM,调用COM组件,错误如下 Fatal error: Class 'COM' not found in XXXXXXXXX php 根目录的 ext 文件夹下 ...
- Flex读取txt文件中的内容(一)
Flex读取txt文件中的内容 phone.txt: 13000003847 13000003848 13000003849 13000003850 13000003851 13000003852 1 ...
- Error:dojo.data.ItemFileWriteStore:Invalid item argument
1.错误描述 dijit.form.ComboBox TypeError:_4e is undefined Sea ...
- Flex中怎么给表格中的滚动条定位
1.问题背景 如果表格中的字段过多,会出现滚动条,在将滚动条滚到一定的位置时,重新刷新表格,滚动条会回到原处,原来查看的字段还得继续滚动,才能查看到. 2.实现实例 <?xml version= ...
- DirectX--yuv420p上实现的字符叠加
unsigned char *pTemp; BYTE OsdY = 0;BYTE OsdU = 0;BYTE OsdV = 0; void OSDSetTextColor(BYTE OsdR, BYT ...