我想根据初始参数初始化不同类的实例。例如,我希望Hello.new(true)
和Hello.new(false)
有不同的行为。确切地说,我希望他们创建不同类的实例。
我怎样才能在Ruby中实现这一目标?
class Name1
end
class Name2
end
class Hello
def initialize(opts)
if opts
Name1.new
else
Name2.new
end
end
end
答案 0 :(得分:2)
你所说的是Factory
模式(至少是一个简单的版本)。可以手动分割调用new
和allocate
的{{1}}流程,但我不推荐它。
主要原因是因为它完全违反直觉。您(几乎)从未发现Ruby库的行为如此。
相反,我建议你使用不同的方法。例如,initialize
。
#factory