The Flyweight pattern is primarily used to reduce the number of objects created and to decrease memory footprint and increase performance. This type of design pattern comes under the structural pattern category, as it provides ways to decrease object count, thus improving the object structure of an application.
Flyweight pattern tries to reuse already existing similar kind objects by storing them and creates a new object when no matching object is found.