父母可以选择实例化哪个孩子吗?

时间:2011-04-01 18:06:18

标签: ruby oop

如果我有动物类,动物通过动物类型动物类型。 Animal可以使用该信息从自身实例化一个孩子吗?如果实例化对象的类不关心它正在创建的对象的类型,这不是一件好事吗?它删除了决定实例化哪个子类所需的case语句。

例如:

@animal = Animal.new(cat) which instantiates a Cat < Animal object.

2 个答案:

答案 0 :(得分:3)

是。请查看工厂设计模式。

答案 1 :(得分:0)

我不确定你的问题是什么,但如果你想从变量创建一个类的实例,你可以调用Class#new方法:

@animal = cat.new

如果您只希望在类实例catAnimal的子类时发生这种情况,那么请执行

@animal = cat.new if cat.superclass == Animal