目的:实现大粒度对象的共享,从而优化系统性能。
应用场景
典型场景:游戏中存在大量相同的怪物,它们的皮肤、模型、名字、等级等数据完全一致,只有位置和状态各有不同。
核心概念
Flyweight 模式将对象状态划分为两类:
- 内蕴(Intrinsic):可共享的状态,由 FlyweightFactory 统一管理。
- 外蕴(Extrinsic):不可共享的状态,由调用方自行维护。
结构图
主要组成
- FlyWeightFactory:Flyweight 对象池,负责创建和管理共享对象。
- ConCreateFlyWeight:具体的共享对象,封装内蕴状态。
- UnSharedConCreateFlyWeight:非共享的具体对象,封装外蕴状态。