[英]How to initialise an instance other than the current class in Ruby?
我想基于初始参数初始化不同类的实例。 例如,我想对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
你所说的是Factory
模式(至少是一个简单的版本)。 可以将new
进程拆分为手动allocate
和initialize
,但我不推荐它。
主要原因是因为它完全违反直觉。 你(几乎)永远不会发现Ruby库表现得像这样。
相反,我建议你使用不同的方法。 例如, #factory
。
class Name1
end
class Name2
end
class Hello
def self.factory(opts)
klass = if opts
Name1
else
Name2
end
klass.new
end
end
Hello.factory(...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.