Sound like a good case for the Factory Pattern. The tricky part is returning the correct object. In this case I would consider using an interface class.
All your classes would comply to this interface so all you have to do is instantiate it. Regardless of what class you create through the factory you will be able to call its method since it complies to the contract of the interface.
Hope it helps!