Singletonパターンは、インスタンス化の制限をすることで生成されるインスタンスを単一とするパターンです。 AS3では、constructorをprivate宣言出来ないため、private Classをconstructorの引数とすることでクラスのSingletonパターン化を実現します。
ポイント
- Singletonクラスのコンストラクターでは、クラス内に定義した空のクラス(SingletonEnforcer)を引数にとる。
- nullが渡された場合の挙動としてErrorをthrowして下さい。コンパイル時には発見できませんが、最悪実行時にエラーを捕捉出来る。
- Singletonクラスのインスタンス化メソッド名はgetInstanceとする。
package { /** * Singleton sample */ public class SingletonSample { /** * instance */ private static var _instance:SingletonSample; /** * get instance */ public static function getInstance():SingletonSample { if (SingletonSample._instance == null) { SingletonSample._instance = new SingletonSample(new SingletonEnforcer()); } return SingletonSample._instance; } /** * singleton constructor * @param enforcer */ public function SingletonSample(enforcer:SingletonEnforcer) { if (!enforcer) throw(Error("you can't create instance by constructor.")); } } } class SingletonEnforcer { }