factory method, flyweight, singleton implementados