Flyweight: A fine-grained instance used for efficient sharing. Use
sharing to support large numbers of fine-grained objects efficiently.
A flyweight is a shared object that can be used in multiple contexts
simultaneously. The flyweight acts as an independent object in each
context âĂŤ it’s indistinguishable from an instance of the object that’s
not shared.
Flyweight just keep intrinsic state, and all the extrinsic states are kept
outside of object.
An application uses a large number of objects, and most object state
can be made extrinsic.