次のようなクラス階層が与えられます。
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_objBCparamA.initialize(param)
私のユースケースでは、使用するサブクラス (BまたはC) と親クラス ( A) が基本的に実際に使用されることはありません。Bかどうかを決定する論理をC共通の祖先に移すのは良い考えかもしれないと思いました。
これが不可能な場合 (またはスタイルが悪い場合)、チェックをどこに置き、paramどのクラスを初期化するかを決定する必要がありますか?