2008-07-04

switchポリモーフィズムのはざまで

多態性(ポリモーフィズム)を目論んでいたはずが、いつのまにかコードにif文とswitch文の渦が紛れ込んでる。

switch ( FLAG ) {
    case 1:
    {
        object = new ObjectA();
    }
    case 2:
    {
        object = new ObjectB();
    }
    default:
    {
        object = new ObjectC();
    }
}

object->doSomething();

せっかく多態性を実現しているのに、なんでswitch文で場合分けしなければいけないのか。

嫌だあ、switch文使いたくない!

ない!ない!

  • そんなあなたに Factory Method パターン。 ……であってるか? デザパタは生齧りだぜー。

  • そんなのよりさ、 CORBA::Object_var obj = 〜; Hoge_var hoge = Hoge::_narrow(obj); if (!CORBA::is_nil(hoge)) { 〜 return; } Fuga_var fuga = Fuga::_narrow(obj); if (!CORBA::is_nil(fuga)) { 〜 return; } みたいな感じになるほ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん