Фабричные методы в Ruby
Каков самый гладкий, наиболее Ruby-подобный способ, чтобы единственный конструктор возвращал объект соответствующего типа?
Чтобы быть более конкретным, вот фиктивный пример: скажем, у меня есть два классаBike
а такжеCar
какой подклассVehicle
, Я хочу этот:
Vehicle.new('mountain bike') # returns Bike.new('mountain bike')
Vehicle.new('ferrari') # returns Car.new('ferrari')
Я предложил решение ниже, но оно используетallocate
который кажется слишком сложным для реализации. Какие есть другие подходы, или мой на самом деле хорошо?