flyweight——享元模式
来源:互联网 发布:英孚网络作业网址 编辑:程序博客网 时间:2024/04/29 19:54
意图
运用共享技术有效地支持大量细粒度的对象。
适用性
当以下情况都成立时可以使用享元模式:
- 一个应用程序使用了大量的对象。
- 完全由于使用大量的对象,造成很大的存储开销。
- 对象的大多数状态都可变为外部状态。
- 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。
- 应用程序不依赖于对象标识。由于Flyweight对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值。
结构
参与者
Flyweight
——描述一个接口,通过这个接口flyweight可以接受并作用于外部状态。
concreteFlyweight
——实现Flyweight接口,并为内部状态(如果有的话)增加存储空间。
UnsharedConcreteFlyweight
——并非所有的Flyweight子类都需要被共享。Flyweight接口使共享成为可能,但它并不强制共享。
FlyweightFactory
——创建并管理flyweight对象。
——确保合理地共享flyweight。
Client
——维持一个队flyweight的引用。
——计算或存储一个(多个)flyweight的外部状态。
协作
- flyweight执行时所需的状态必定是内部或外部的。
- 用户不应直接对ConcreteFlyweight类进行实例化,而只能从FlyweightFactory对象得到ConcreteFlyweight独享,这可以保证对他们适当地进行共享。
效果
使用Flyweight时,传输、查找和/或计算外部状态都会产生运行时开销,尤其当flyweight原先被存储为内部状态时。然而,空间上的节省抵消了这些开销。共享的flyweight越多,空间节省也就越大。
存储节约由以下几个因素决定:
- 因为共享,实例总数减少的数目。
- 对象内部状态的平均数目。
- 外部状态时计算的还是存储的。
实现
实现Flyweight时,注意以下几点:
1)删除外部状态。
2)管理共享对象。
阅读全文
0 0
- 设计模式—FlyWeight享元模式
- 设计模式——享元FlyWeight
- 享元模式——FlyWeight
- flyweight——享元模式
- 享元(FlyWeight)模式
- 享元模式Flyweight
- FlyWeight 享元模式
- 享元模式(Flyweight)
- 享元模式 ---flyweight
- 享元模式--Flyweight
- Flyweight 享元模式
- 享元模式(Flyweight),
- 享元模式/Flyweight
- 享元模式flyweight
- 享元模式(Flyweight)
- flyweight 享元模式
- 享元模式-Flyweight
- Flyweight - 享元模式
- How to get real file offset in NAND by file name?
- Linux基础学习笔记之切换终端的方法
- eclipse修改maven web项目的访问根目录
- 数字电子钟 1Hz 秒脉冲信号的设计
- html+css任务笔记
- flyweight——享元模式
- 二分查找(Binary Search)
- 进程-进程标识符
- Costume Party POJ
- (一)OpenCV学习笔记——Linux下编译运行opencv程序
- Androidstudio启动模拟器失败Intel HAXM is required to run this AVD,VT-x is disabled in BIOS;
- 非常好的raft协议教程
- 块级元素与行内元素
- uC/OS-III任务创建函数OSTaskCreate()