次のようなクラス階層が与えられます。
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
どのクラスを初期化するかを決定する必要がありますか?