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