ファクトリの作成

Curlではファクトリパターンを“ファクトリ”という機能を利用して、簡単に実装できます。これはfactoryを利用します。 

|| TestFactory
{define-class public abstract TestFactory

  {getter public abstract {name}:String }

  {factory public {default
                      switch:int = 1
                  }:TestFactory
    {return
        {if switch == 1 then
            {Class01} || 子クラスのインスタンス生成
         else
            {Class02} || 子クラスのインスタンス生成
        }
    }
  }
}

|| Class01
{define-class public Class01 {inherits TestFactory}
  {getter public {name}:String
    {return “class 01”}
  }
}

|| Class02
{define-class public Class02 {inherits TestFactory}
  {getter public {name}:String
    {return “class 02”}
  }
}

{do
    def fac = {TestFactory switch = 2}
    {output fac.name} || 実行結果はClass02.nameの”class 02”
}

ファクトリの詳細はこちらをご覧ください。