一、定义

运用共享技术有效地支持大量细粒度的对象。

二、实例

首先,有个享元超类

 public abstract class Website{public int websiteid;public Website(int _websiteid){websiteid = _websiteid;}public abstract void Collecter();                }

其次,具体的子类

 public class Mall : Website{public Mall(int _websiteid) : base(_websiteid){}public override void Collecter(){Console.WriteLine("商城.");}}

最后,要一个享元工厂

 public class WebsiteFactory{private Hashtable websites = new Hashtable();public Website GetWebsiteByID(int key){if (!websites.ContainsKey(key))websites.Add(key, new Mall(key));return (Website)websites[key];}}

客户端:

//------------------------享元模式------------------------Flyweight.WebsiteFactory factory = new Flyweight.WebsiteFactory();Flyweight.Website web_1= factory.GetWebsiteByID(1);web_1.Collecter();Flyweight.Website web_2 = factory.GetWebsiteByID(2);web_2.Collecter();Flyweight.Website web_3 = factory.GetWebsiteByID(2);web_3.Collecter();

三、总结

1、享元模式VS单例模式

享元是对象级别的, 也就是说在多个使用到这个对象的地方都只需要使用这一个对象即可满足要求,
而单例是类级别的, 就是说这个类必须只能实例化出来一个对象,
可以这么说, 单例是享元的一种特例,
设计模式不用拘泥于具体代码, 代码实现可能有n多种方式, 而单例可以看做是享元的实现方式中的一种, 但是他比享元更加严格的控制了对象的唯一性

2、应用环境

程序中应用了大量的对象,造成了很大的存储空间,并且这些对象可以根据外部环境的参数进行区分。

转载于:https://www.cnblogs.com/sunchong/p/5146104.html

设计模式(十七):享元模式相关推荐

  1. 北风设计模式课程---享元模式

    北风设计模式课程---享元模式 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1.享元模式的本质是什么? 池技术:各种缓存池都是享元模式的体现 说到享元模 ...

  2. 每天一个设计模式之享元模式

    作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) ...

  3. 北风设计模式课程---享元模式与单例模式区别

    北风设计模式课程---享元模式与单例模式区别 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1.享元模式与单例模式区别? 级别:单例模式是类级别的,一个类 ...

  4. .net设计模式 (享元模式)学习笔记

    运用设计模式只是为了解决一类问题的,当解决掉当前一类问题,通常会在解决这个问题时候 带来其他问题  合理应用扬长避短 结构性设计模式:关注的是类与类之间的关系 .net设计模式 (享元模式)学习笔记 ...

  5. Java设计模式之享元模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  6. 详解设计模式:享元模式

    享元模式(Flyweight Pattern),是对象池的一种体现,也是 GoF 的 23 种设计模式中的一种结构型设计模式. 享元模式 主要用于减少创建对象的数量,以减少内存占用和提高性能.它提供了 ...

  7. 设计模式之享元模式详解

    设计模式之享元模式详解 概述 享元模式定义: ​ 运用共享技术来有效地支持大量细粒度对象的复用.它==通过共享已经存在的对象来大幅度减少需要创建的对象数量==.避免大量相似对象的开销,从而提高系统资源 ...

  8. 【设计模式】享元模式(C#)

    [设计模式]享元模式 1.概述 Flyweight Design Pattern,结构型模式.享元模式中的"享元"指被共享的单元.享元模式通过复用对象,以达到节省内存的目的. 用于 ...

  9. Java设计模式之享元模式

    Java设计模式之享元模式 1. 享元模式概述 1.1 享元定义 1.2 享元模式注意事项 2. 享元模式实现 1. 享元模式概述 1.1 享元定义 1)享元模式(享元模式)也叫蝇量模式:利用共享技术 ...

  10. 设计模式之享元模式(Flyweight)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

最新文章

  1. Ubuntu 12.04 64bit上安装Apache Traffic Server 4.1.2
  2. 【 Linux 】Vim的基本配置以及出现问题解决(su认证失败)
  3. 统计局:2018年规模以上工业增加值同比增长6.2%
  4. Jenkins 创建一个freestyle的Job
  5. 使用Bootstrap插件datapicker获取时间
  6. 量角器中Selenium定位器的完整指南(示例)
  7. 第二节JVM JRE 和JDK介绍
  8. 数据科学 IPython 笔记本 8.6 可视化误差
  9. 【分布式ID】理解Snowflake算法的实现原理
  10. THREEJS - 动态标签(dom方式)
  11. 一些自成系统、完备的教程(链接、博客、github等)
  12. CentOS更改yum源
  13. 编译lame报错:lame_init_old找不到
  14. 谷歌插件firebug和xpath下载,并解决包括拖拽无法安装、提示“组件无法安装 未通过验证”等问题
  15. 批量给 Word、Excel、PPT 和 PDF 设置文件保护打开密码和只读密码
  16. postgresql安装postgis扩展模块
  17. 从零開始搭建微信硬件开发环境全过程——1小时掌握微信硬件开发流程
  18. VMware Horizon view 7 云桌面终端安全解决方案
  19. 课设-基于51单片机+超声波模块的避障小车(源码+原理图+Protel仿真)
  20. Win10设置系统补丁更新服务器,win10如何关闭自动更新补丁_win10关闭自动更新补丁的图文教程...

热门文章

  1. 自定义UITableViewCell
  2. [Spring实战系列](18)注解切面
  3. 文字垂直居中,水平居中 a标签水平居中只要给他的父级设置text-align=center
  4. exchange 2010 sp2系列之(二)证书配置
  5. SCCM报表点和SQL Server的报表服务集成, 随心所欲创建报表?
  6. 在不重装系统的情况下创建Linux的Swap分区
  7. Linux下俄罗斯方块程序设计(c++)-转
  8. Ubuntu 12.04下关闭图形界面知识整理-转
  9. PAT 1081. 检查密码 (15) - 乙级
  10. int输出%f浮点值是0,double/float 浮点数%d输出0的原因