## Flyweight Use sharing to support large numbers of fine-grained objects efficiently. ### When to use * when all of the following are true * an application uses a large number of objects * storage costs are high because of the sheer quantity of objects * most object state can be made extrinsic * many groups of objects may be replaced by relatively few shared objects once extrinsic state is removed * the application doesn't depend on object identity