Metody fabryczne w Rubim

Jaki jest najdelikatniejszy, najbardziej podobny do Rubiego sposób, aby pojedynczy konstruktor zwracał obiekt odpowiedniego typu?

Mówiąc dokładniej, oto fałszywy przykład: powiedzmy, że mam dwie klasyBike iCar która podklasaVehicle. Chcę to:

Vehicle.new('mountain bike')  # returns Bike.new('mountain bike')
Vehicle.new('ferrari')        # returns Car.new('ferrari')

Zaproponowałem rozwiązanie poniżej, ale używaallocate który wydaje się zbyt ciężki w realizacji. Jakie są inne podejścia, czy moje są w porządku?

questionAnswers(6)

yourAnswerToTheQuestion