gpt4 book ai didi

ruby - Ruby 中的工厂方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:32:43 26 4
gpt4 key购买 nike

让单个构造函数返回适当类型的对象的最巧妙、最像 Ruby 的方法是什么?

更具体地说,这是一个虚拟示例:假设我有两个类 BikeCar,它们是 Vehicle 的子类。我想要这个:

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

我在下面提出了一个解决方案,但它使用了 allocate ,这似乎实现过于繁重。还有哪些其他方法,或者我的方法真的可以吗?

最佳答案

如果我创建了一个未调用1 newinitialize 的工厂方法,我想这并不能真正回答问题“我如何制作一个……构造函数……”,但我认为这就是我要做的……

class Vehicle
def Vehicle.factory vt
{ :Bike => Bike, :Car => Car }[vt].new
end
end

class Bike < Vehicle
end

class Car < Vehicle
end

c = Vehicle.factory :Car
c.class.factory :Bike

1。调用方法 factory 在此教学示例中非常有效,但您可能需要考虑 IRL @AlexChaffee评论中的建议。

关于ruby - Ruby 中的工厂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1515577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com