Reduce redundant objects with Flyweight Design pattern