设计模式——享元模式(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 ...
随机推荐
- ActiveRecord的生命周期
ActiveRecord的生命周期,通过方法重写和插入我们需要的业务逻辑来达到我们对程序的控制. 示例: 1,beforeSave() public function beforeSave($inse ...
- 【java学习笔记】序列化、反序列化
序列化 是将对象的完整信息保存起来的过程(持久化). 序列化流:ObjectOutputStream 反序列化 是将对象进行还原的过程(反持久化). 反序列化流:Ob ...
- python网络编程基础知识整理
- R语言学习笔记︱Echarts与R的可视化包——地区地图
笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...
- php 连接mssql
以前用的都是mysql,今天突然想用下mssql,起先用的是sql server200. 第一种方法 打开mssql.dll拓展.然后把mssql.secure_connection = off改为o ...
- 父页面(JSP页面)传参数到子页面(JSP页面)
父页面(JSP页面)传参数到子页面(JSP页面) 1.父页面传参数到子页面 //JavaScript代码 $.ajax({ type:"POST", uri:"../st ...
- Java求素数时出现错误
Java求素数时出现错误 1.具体错误如下 No enclosing instance of type Prime is accessible. Must qualify the allocation ...
- 运行项目Tomcat报错
1.具体报错如下: Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the serve ...
- Flex中配置FusionCharts
Flex中配置FusionCharts 1.配置前说明 (需要的工具和插件) 1.1 MyEclipse10.0 1.2 Flash Builder4.0 1.3 FusionCharts ...
- raid功能中spanning和striping模式有什么区别?
RAID 0 又称为Stripe(条带化,串列)或Striping 它代表了所有RAID级别中最高的存储性能.RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可 ...