Flyweight pattern
Keep track of created objects
If the object exists, return the object instead of creating a new object
Minimize the amount of consumed memory
Keep track of created objects
If the object exists, return the object instead of creating a new object
Minimize the amount of consumed memory