如果我有动物类,动物通过动物类型动物类型。 Animal可以使用该信息从自身实例化一个孩子吗?如果实例化对象的类不关心它正在创建的对象的类型,这不是一件好事吗?它删除了决定实例化哪个子类所需的case语句。
例如:
@animal = Animal.new(cat) which instantiates a Cat < Animal object.
答案 0 :(得分:3)
是。请查看工厂设计模式。
答案 1 :(得分:0)
我不确定你的问题是什么,但如果你想从变量创建一个类的实例,你可以调用Class#new
方法:
@animal = cat.new
如果您只希望在类实例cat
是Animal
的子类时发生这种情况,那么请执行
@animal = cat.new if cat.superclass == Animal