实现对象的复用
享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。
享元模式中的几个角色:
- Flyweight(抽象享元类)
通常内部状态作为其成员变量,外部状态通过公共的方法进行设置。 - ConcreteFlyweight(具体享元类)
其实例称为享元对象,通常结合单例模式来设计。 - UnsharedConcreteFlyweight(非共享具体享元类)
当需要一个非共享具体享元类时可以直接通过实例化创建。 - FlyweightFactory(享元工厂)
享元工厂类用于创建并管理享元对象,存储在一个享元池中。
- 优点
- 可以极大减少内存中对象的数量、
- 享元对象的外部状态相对独立,不会影响其内部状态。
- 缺点
- 系统设计更加复杂,需要分离内部状态和外部状态。
- 适用场景
- 大量相似的对象。
- 对象的大部分状态可以外部化。
- 多次重复使用的享元对象时。
|
|
|
|
|
|