总第71篇
本篇将详细梳理程序设计中的享元模式。
1.享元模式的概念
享元模式(Flyweight Pattern
)是池技术的重要实现方式,它是运用共享对象有效地支持大量细粒度对象的复用。 享元对象能做到共享的关键是区分内部状态和外部状态。
- 内部状态(
Intrinsic State
):是存储在享元对象内部并且不会随环境改变的状态,是对象可共享出来的信息; - 外部状态(
Extrinsic State
):是随环境改变而改变、不可共享的状态。 享元对象的外部状态必须由客户端保存,并在享元对象创建后,在需要使用的时候再传入到享元对象内部。
享元模式的类图关系如下所示:
![v2-623125a085ddfc9901730cca8a0a905d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/429d68dd7d82ea7fef4dedebd5bdd10e.png)
从上面的关系图可以看出,享元模式主要包含四个角色:
Flyweight
抽象享元角色:它是一个产品的抽象类,同时定义对象外部状态和内部状态 的接口或实现;FlyweightImpl
具体享元角色:具体的产品类,实现抽象角色定义的业务; <