标签:
1. 定义
运用共享技术有效地支持大量细粒度的对象
2. 代码结构
Flyweight: 享元接口,通过这个接口Flyweight 可以接受并作用于外部状态。通过这个接口传入外部的状态,在享元对象的方法处理中可能会使用这些外部的数据
ConcreteFlyweight: 具体的享元实现对象,必须可共享的,需要封装Flyweight的内部状态。
UnsharedConcreteFlyweight: 非共享的享元实现,并不是所有的Flyweight实现对象都需要共享。非共享的享元实现对象通常是对共享享元对象的组合对象。
FlyweightFactory:享元工厂,主要用来创建并管理共享的享元对象,并对外提供访问共享享元的接口。
Client: 享元客户端,主要的工作是维持一个对Flyweight的引用,计算或存储享元对象的外部状态。
coding...
3.本质
分离与共享
4.何时选择
如果一个应用程序使用了大量的细粒度对象,可以使用享元模式来减少对象数据。
如果由于使用大量的对象,造成很大的存储开销,可以使用享元模式来减少对象数量,并节约内存
如果对象的大多数状态都可以转化为外部状态,比如通过计算得到,挥着从外部传入,可以使用享元模式来实现内部状态和外部状态的分离
如果不考虑对象的外部状态,可以用相对较少的共享对象取代很多组合对象,可以使用享元模式来共享对象,然后组合对象来使用这些共享对象
标签:
原文地址:http://www.cnblogs.com/zhaojunyang/p/5879958.html