让父类创建其子类的实例的最佳方法是什么?我想出了有效的方法,但不喜欢它们。一个例子:
class MyParentClass
def do_something
if condition1
@child = ChildClass1.new
else
@child = ChildCLass2.new
end
end
end
class ChildClass1 < MyParentClass
end
class ChildClass2 < MyParentClass
end
答案 0 :(得分:1)
根据您在评论中描述的内容,最好为您的应用程序应用模板设计模式。并在父类之外创建子类实例,这不是父类的责任。
这是sample implementation of ruby template design pattern。您将大致了解何时创建子类以及父如何充当模板类来执行主进程。
当然,在ruby世界中,您可以使用代码块而不是繁重的模板设计模式。您可以将代码块传递给main方法。