Flyweight模式 的学习
来源:互联网 发布:js 掷骰子动画 编辑:程序博客网 时间:2024/06/11 15:45
一、Flyweight模式的意图:
缓存(共享)可以共同的对象、属性,避免创建大量的重复对象、内容。
二、Flyweight模式的特点:
为重复或可共享的对象、属性设置一个缓冲,称为内部属性。这些内部属性一般情况下都是不可修改的,也就是在第一个对象、属性被创建后,就不会去修改了(否则就没意义了)。
除了共享对象、属性之外,还有一些是基于应用环境,或是实时数据,这些无法共享的东西我们称为外部状态。
在Flyweight模式应用中,通常修改的是外部状态属性,而内部状态属性一般都是用于参考或计算时引用。
三、Flyweight模式的构成:
Flyweight模式一般由几个部分组成:
·Flyweight接口(抽象类) :定义了一个可共享的元类
·Flyweight实现类:实现了元类中的操作,而且可能会提供一个用于保存内部状态(共享属性)的空间
·Flyweight Factory:创建Flyweight的工厂类,创建后将其保存到Flyweight Pool中
·Flyweight Pool:缓冲Flyweight对象的池,通常包含在工厂类中
四、Flyweight模式的简单实现
1.Flyweight:
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
2.ConcreateFlyweight:
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif)
//Flyweight pool
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
4.测试类:
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
也就是在缓冲这一点上,体现了Flyweight模式的精髓。
- Flyweight模式 的学习
- 设计模式学习11 Flyweight
- JavaScript设计模式学习——FlyWeight
- flyweight模式
- Flyweight模式
- FlyWeight模式
- Flyweight模式
- Flyweight模式
- Flyweight 模式
- Flyweight模式
- FlyWeight模式
- FlyWeight模式
- Flyweight 模式
- FlyWeight模式
- FlyWeight模式
- FlyWeight模式
- Flyweight模式
- Flyweight模式
- struts2 存取cookie
- 在SQL 脚本中进行 文件的读写
- ICE Manual(Documentation for Ice 3.5)---Slice
- NYOJ117 求逆序数
- Shell标准输出、标准错误 >/dev/null 2>&1
- Flyweight模式 的学习
- jQuery event 源码注释
- androidSpinner使用及根据选择项跳转到相应的Activity
- FlyWeight模式——设计模式学习笔记
- Linux Vi/Vim 键盘图
- 网页判断IE版本
- 设计模式开篇(一)
- the code of 4sum
- 成员函数与非成员函数的区别