- 1、本文档共134页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C设计模式0310
I n t e r s e c t s在执行之前,必须知道g l y p h所在的场景,如下图所示。 表示字母“a”的f l y w e i g h t只存储相应的字符代码;它不需要存储字符的位置或字体。用户提供与场景相关的信息,根据此信息f l y w e i g h t绘出它自己。例如, Row glyph知道它的子女应该在哪儿绘制自己才能保证它们是横向排列的。因此Row glyph可以在绘制请求中向每一个子女传递它的位置。 3. 适用性 F l y w e i g h t模式的有效性很大程度上取决于如何使用它以及在何处使用它。当以下情况都成立时使用F l y w e i g h t模式: ? 一个应用程序使用了大量的对象。 ? 完全由于使用大量的对象,造成很大的存储开销。 ? 对象的大多数状态都可变为外部状态。 ? 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。 ? 应用程序不依赖于对象标识。由于F l y w e i g h t对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值。 4. 结构 下面的对象图说明了如何共享f l y w e i g h t。 5. 参与者 ? F l y w e i g h t ( G l y p h ) — 描述一个接口,通过这个接口f l y w e i g h t可以接受并作用于外部状态。 ? C o n c r e t e F l y w e i g h t( C h a r a c t e r ) — 实现F l y w e i g h t 接口, 并为内部状态( 如果有的话) 增加存储空间。 C o n c r e t e F l y w e i g h t对象必须是可共享的。它所存储的状态必须是内部的;即,它必须独立于C o n c r e t e F l y w e i g h t对象的场景。 ? U n s h a r e d C o n c r e t e F l y w e i g h t ( R o w, C o l u m n ) — 并非所有的F l y w e i g h t子类都需要被共享。F l y w e i g h t接口使共享成为可能,但它并不强制共享。在F l y w e i g h t对象结构的某些层次, U n s h a r e d C o n c r e t e F l y w e i g h t对象通常将C o n c r e t e F l y w e i g h t对象作为子节点(R o w和C o l u m n就是这样)。 ? F l y w e i g h t F a c t o r y — 创建并管理f l y w e i g h t对象。 — 确保合理地共享f l y w e i g h t。当用户请求一个f l y w e i g h t时,F l y w e i g h t F a c t o r y对象提供一个已创建的实例或者创建一个(如果不存在的话)。 ? Client — 维持一个对f l y w e i g h t的引用。 — 计算或存储一个(多个) f l y w e i g h t的外部状态。 6. 协作 ? f l y w e i g h t执行时所需的状态必定是内部的或外部的。内部状态存储于C o n c r e t e F l y w e i g h t对象之中;而外部对象则由C l i e n t对象存储或计算。当用户调用f l y w e i g h t对象的操作时,将该状态传递给它。 ? 用户不应直接对C o n c r e t e F l y w e i g h t类进行实例化,而只能从F l y w e i g h t F a c t o r y对象得到C o n c r e t e F l y w e i g h t对象,这可以保证对它们适当地进行共享。 7. 效果 使用F l y w e i g h t模式时,传输、查找和/或计算外部状态都会产生运行时的开销,尤其当f l y w e i g h t原先被存储为内部状态时。然而,空间上的节省抵消了这些开销。共享的f l y w e i g h t越多,空间节省也就越大。 存储节约由以下几个因素决定: ? 因为共享,实例总数减少的数目 ? 对象内部状态的平均数目 ? 外部状态是计算的还是存储的 共享的F l y w e i g h t越多,存储节约也就越多。节约量随着共享状态的增多而增大。当对象使用大量的内部及外部状态,并且外部状态是计算出来的而非存储的时候,节约量将达到最大。所以,可以用两种方法来节约存储:用共享减少内部状态的消耗,用计算时间换取对外部状态的存储
您可能关注的文档
- CDPSPCAC019B 冷缠胶粘带技术规格书.doc
- CDPSPCPL003B 套管用绝缘支撑块及端部密封套带技术规格书.doc
- CFG及真空联合堆载预压软基处理施工方案.doc
- CECAGC3建设项目工程结算编审规程.doc
- chryser标准PF9326.doc
- Cgns入门到精通高级知识库.ppt
- CHT全球定位系统实时动态测量RTK技术规范.doc
- Cgns入门.doc
- ch2 Matab矩阵的生成与运算.ppt
- CKGZTJ4标四电接口工程及综合接地系统技术交底.doc
- 广东省茂名市七校联盟2024-2025学年高一下学期2月开学联考试题含答案(9科试卷).pdf
- 山西省晋中市2024-2025学年高一上学期期末考试含答案7科试卷).pdf
- 贵州省毕节市2025届高三年级高考第二次适应性考试(毕节二诊)历史含答案.docx
- 江苏省泰州市2024-2025学年高二上学期期末考试政治含答案.pdf
- 山西省晋中市2024-2025学年高二上学期期末考试语文含答案.pdf
- (2025.03.13)全县民营经济发展工作情况总结.docx
- (2025.03.13)在全县宣传思想工作会上的讲话.docx
- (2025.03.13)绿化和市容管理局2024生态环境保护工作履职专题报告(区绿化市容局).docx
- 学校临聘人员管理制度.docx
- 节约用水公益宣传主题活动.pptx
文档评论(0)