如何初始化Ruby中当前类以外的实例?

时间:2013-04-10 07:48:47

标签: ruby oop class proxy instance

我想根据初始参数初始化不同类的实例。例如,我希望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

1 个答案:

答案 0 :(得分:2)

你所说的是Factory模式(至少是一个简单的版本)。可以手动分割调用newallocate的{​​{1}}流程,但我不推荐它。

主要原因是因为它完全违反直觉。您(几乎)从未发现Ruby库的行为如此。

相反,我建议你使用不同的方法。例如,initialize

#factory