A subscriber is unaware of how many resources are in the pool when he or she lifts the handset to make a call. All that matters to subscribers is that dial tone is provided, digits are received, and the call is completed. Whereas Flyweight shows how to make lots of little objects, Facade shows how to make a single object represent an entire subsystem. Flyweight is often combined with Composite to implement shared leaf nodes. Terminal symbols within Interpreter's abstract syntax tree can be shared with Flyweight.
Flyweight explains when and how State objects can be shared.