享元模式(Flyweight)将对象的状态分为内部状态(存储于对象内部)和外部状态(取决于对象所在场景),对具有相同内部状态的对象进行共享,从而节约内存。
享元模式的实际应用包括Java String类,数据库连接池,线程池等。
享元模式包含以下四部分:
- Flyweight 享元接口
- ConcreteFlyweight 实现Flyweight的具体子类,存储内部状态并独立于外部状态
- UnsharedConcreteFlyweight 不被共享的Flyweight子类
- FlyweightFactory 提供已创建的共享对象或创建新的对象