给定一个类层次结构如下:
class A
def initialize(param)
if param == 1 then
#initialize and return instance of B
else
#initialize and return instance of C
end
end
end
class B < A
end
class C < A
end
是否可以实际初始化并在初始化时返回B或的实例?即将导致成为类的实例或取决于 的值,这将被签入。CAmy_obj = A.new(param)my_objBCparamA.initialize(param)
在我的用例中,它只在运行时知道要使用哪个子类(B或C),而父类(A)基本上从未真正使用过。我认为将决定是否B或C转移到他们共同祖先的逻辑可能是一个好主意。
如果这是不可能的(或不好的风格),我应该在哪里检查param并决定初始化哪个类?