从父类创建子类实例

时间:2014-08-04 22:15:25

标签: ruby

让父类创建其子类的实例的最佳方法是什么?我想出了有效的方法,但不喜欢它们。一个例子:

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

1 个答案:

答案 0 :(得分:1)

根据您在评论中描述的内容,最好为您的应用程序应用模板设计模式。并在父类之外创建子类实例,这不是父类的责任。

这是sample implementation of ruby template design pattern。您将大致了解何时创建子类以及父如何充当模板类来执行主进程。

当然,在ruby世界中,您可以使用代码块而不是繁重的模板设计模式。您可以将代码块传递给main方法。