给定一个类层次结构如下:
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
或的实例?即将导致成为类的实例或取决于 的值,这将被签入。C
A
my_obj = A.new(param)
my_obj
B
C
param
A.initialize(param)
在我的用例中,它只在运行时知道要使用哪个子类(B
或C
),而父类(A
)基本上从未真正使用过。我认为将决定是否B
或C
转移到他们共同祖先的逻辑可能是一个好主意。
如果这是不可能的(或不好的风格),我应该在哪里检查param
并决定初始化哪个类?