. 世间万物皆为对象
从大学校园中拦住个软件Software工程专业学生问他什么是面向对象他会告诉你世间万物皆是对象
世界的大何止万物上至宇宙星辰下至细菌病毒皆为对象
女孩吐气如兰仍留淡淡余香
男孩闭眼陶醉不亦乐乎
2. 对象爆炸
呼吸的间分子无数
每个分子皆为对象恐万台服务器的矩阵亦无可容
奈何乎?
GOF 曰: 享元模式!
3. 何为享元模式
Flyweight : 次最轻量级拳击选手即粒度最小
因此享元模式目是采用共享技术解决大量细粒度对象爆炸问题
图:
图 [阅读全文] [PDF]
Flyweight定义:
避免大量拥有相同内容小类开销(如耗费内存)使大家共享个类(元类).
为什么使用?
面向对象语言原则就是切都是对象但是如果真正使用起来有时对象数可能显得很庞大比如字处理软件Software如果以每个文字都作为个对象几千个字对象数就是几千无疑耗费内存那么我们还是要"求同存异"找出这些对象群共同点设计个元类封装可以被共享类另外还有些特性是取决于应用(context)是不可共享这也Flyweight中两个重要概念内部状态rinsic和外部状态extrinsic的分.
说白点就是先捏个原始模型然 [阅读全文] [PDF]
GOF:运用共享技术有效地支持大量细粒度对象
解释下概念:也就是说在个系统中如果有多个相同对象那么只共享份就可以了不必每个都去例子化个对象比如说(这里引用GOF书中例子)个文本系统每个字母定个对象那么大小写字母共就是52个那么就要定义52个对象如果有个1M文本那么字母是何其多如果每个字母都定义个对象那么内存早就爆了那么如果要是每个字母都共享个对象那么就大大节约了资源
在Flyweight模式中由于要产生各种各样对象所以在Flyweight(享元)模式中常出现Factory模式Flyweight内部状态是用来共享,Flyweight facto [阅读全文] [PDF]
本文举例源代码或素材下载
举例
有个Message实体类某些对象对它操作有Insert和Get思路方法现在要运用共享技术支持这些对象
http://www.dofactory.com/Patterns/PatternFlyweight.aspx
OK
[阅读全文] [PDF]
、享元(Flyweight)模式 Flyweight在拳击比赛中指最轻量级即"蝇量级"有些作者翻译为"羽量级"这里使用"享元模式"更能反映模式用意
享元模式以共享方式高效地支持大量细粒度对象享元对象能做到共享关键是区分内蕴状态(Internal State)和外蕴状态(External State)内蕴状态是存储在享元对象内部并且不会随环境改变而改变因此内蕴状态并可以共享
外蕴状态是随环境改变而改变、不可以共享状态享元对象外蕴状态必须由客户端保存并在享元对象被创建的后在需要使用时候 [阅读全文] [PDF]
但在编译运行时问题产生了:出版社和作者显示不了
雨田原来代码:
// Flyweight.cpp
#pragma warning(disable: 4786)
# <iostream>
# <map>
# <>
# <stdlib.h>
using std;
Book
{
public:
GetPublish { *m_publishCompany;}
GetWrit [阅读全文] [PDF]
1 共6条 分1页
- +_@开青岛发票13434444051程生
- 一个简单的 2层系统分析全程
- 主题和皮肤系列(3)
- 主题和皮肤系列(1)
- 主题和皮肤系列(2)
- 鼠标移上去显示层:鼠标滑过显示隐藏层(转)
- jspajax自动刷新:jsp+ajax自动刷新例子(转)
- form表单验证:用js将form表单同时提交到两个区别页面的思路方法
- php上传代码:php统计代码总行数
- 最佳网页宽度及其实现
- 联想2155:PKU 2155
- micboost什么意思:Boost 概述
- atmega16ucosii:μC/OS-II实时性能测试和分析
- cssimportant:4 种实时操作系统实时性的分析对比 --转 time too important
- 基于OHCI的USB主机 —— 总体构架
- 虚拟主机usb:基于OHCI的USB主机 —— 背景介绍
- vc用法:VC使用方法汇总
- 张孝祥《Java就业培训教程》源代码 02 部分
- 抽象类和接口:详细解析Java中抽象类和接口的区别
- 跟踪技术:JSP中的会话跟踪技术