シングルトンの書き方

ActionScript3.0では、privateなコンストラクタを書けない制約があり、Singletonパターンを実装したクラスが定義できませんでした。んで、解決策が出ています。他のクラスから参照できないブロッククラスを用いる方法です。


Singleton.as

package
{
    public class Singleton
    {
         public function Singleton(blocker:SingletonBlocker)
         {
             if (blocker == null)
                 throw new Error("Public construction not allowed.  Use getInstance()");
         }
		 
         public static function getInstance() : Singleton
         {
             return instance;
         }
		 
         private static var instance:Singleton = new Singleton(new SingletonBlocker());
    }
}

class SingletonBlocker
{}

以下、正しい使い方です。

var single:Singleton = Singleton.getInstance();

次に、間違った使い方です。

var single:Singleton = new Singleton();

さていかがでしょうか?なかなか良い感じです。



AS3 programming 101 for C/C++ coders
http://blogs.adobe.com/kiwi/2006/05/as3_programming_101_for_cc_cod_1.html#more