Java ライクなシングルトンのサンプルが多いので自分なりに ActionScript らしく書いてみました。

AIR 2 の flash.filesystem.StorageVolumeInfo - Adobe® Flex® 4.1 リファレンスガイド クラスのシングルトン実装が良さそうなのでこれを参考にしてみました。

package
{
import flash.utils.getQualifiedClassName;
/
* シングルトンのサンプル
*/
public class SingletonSample
{
private static var _instance:SingletonSample = new SingletonSample();
/

* シングルトン提供プロパティ名をクラス名のLowerCamelにする
*/
public static function get singletonSample():SingletonSample {
return _instance;
}
public function SingletonSample()
{
if (_instance) {
throw new ArgumentError(getQualifiedClassName(this) + “ クラスをインスタンス化することはできません。”);
}
// 初期化処理
_name = “sample name”;
}
private var _name:String;
public function get name():String {
return _name;
}
}
}

インスタンス変数を初期化時に生成しています。使用頻度によっては最初の参照時に生成した方が良いでしょう。

サンプルクラスの使用例

var ss:SingletonSample = SingletonSample.singletonSample;
trace(ss.name);
// “sample name” と出力