目的:实现大粒度对象的共享,从而优化系统性能。

应用场景

典型场景:游戏中存在大量相同的怪物,它们的皮肤、模型、名字、等级等数据完全一致,只有位置和状态各有不同。

核心概念

Flyweight 模式将对象状态划分为两类:

  • 内蕴(Intrinsic):可共享的状态,由 FlyweightFactory 统一管理。
  • 外蕴(Extrinsic):不可共享的状态,由调用方自行维护。

结构图

主要组成

  • FlyWeightFactory:Flyweight 对象池,负责创建和管理共享对象。
  • ConCreateFlyWeight:具体的共享对象,封装内蕴状态。
  • UnSharedConCreateFlyWeight:非共享的具体对象,封装外蕴状态。