flyweight pattern example