首页 > 代码库 > 享元模式

享元模式

1. 定义

运用共享技术有效地支持大量细粒度的对象

2. 代码结构

Flyweight: 享元接口,通过这个接口Flyweight 可以接受并作用于外部状态。通过这个接口传入外部的状态,在享元对象的方法处理中可能会使用这些外部的数据

ConcreteFlyweight: 具体的享元实现对象,必须可共享的,需要封装Flyweight的内部状态。

UnsharedConcreteFlyweight: 非共享的享元实现,并不是所有的Flyweight实现对象都需要共享。非共享的享元实现对象通常是对共享享元对象的组合对象。

FlyweightFactory:享元工厂,主要用来创建并管理共享的享元对象,并对外提供访问共享享元的接口。

Client: 享元客户端,主要的工作是维持一个对Flyweight的引用,计算或存储享元对象的外部状态。

coding...

 

3.本质

分离与共享

4.何时选择

如果一个应用程序使用了大量的细粒度对象,可以使用享元模式来减少对象数据。

如果由于使用大量的对象,造成很大的存储开销,可以使用享元模式来减少对象数量,并节约内存

如果对象的大多数状态都可以转化为外部状态,比如通过计算得到,挥着从外部传入,可以使用享元模式来实现内部状态和外部状态的分离

如果不考虑对象的外部状态,可以用相对较少的共享对象取代很多组合对象,可以使用享元模式来共享对象,然后组合对象来使用这些共享对象

 

享元模式