旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

AS3で半Singleton

2007年10月24日

ActionScript3で半Singletonパターンのコードを書くときのサンプルです。

「半」ってなんだよーというと、以下のSingletonの効用の内

  • 1クラスに対し1つのインスタンスのみしか作らせない。
  • スコープを気にせず唯一のインスタンスにアクセスできる。

下の方の特性だけを使えるようにするためです。
上の方は、どうせ一人開発だからいいや、と、あんまり気持ち良く書けなさそうですし。

こんな感じで定義する

public class Hoge {
/** 唯一のインスタンスを格納する */
private static var _instance:Hoge;
/** コンストラクタ */
public function Hoge():void {
// コンストラクタの処理の最後にこれを書く
_instance = this;
}
/** Singletonパターンでインスタンスを取得する */
public static function getInstance():Hoge {
return _instance;
}
}

使い方としては、普通に1回newでインスタンスを生成した後に

new Hoge();

後はこれで唯一のインスタンスにアクセスできる

var hoge:Hoge = Hoge.getInstance();

やっぱ、これが使えると楽だなー、自分は。

参考: コンストラクタ (と Singleton)
【追記】
getterをstaticで定義できることを知り、更に適当さがパワーアップしました

public class Hoge {
/** 唯一のインスタンスを格納する */
private static var _instance:Hoge;
/** コンストラクタ */
public function Hoge():void {
// コンストラクタの処理の最後にこれを書く
_instance = this;
}
/** Singletonパターンでインスタンスを取得する */
public static function get i():Hoge {
return _instance;
}
}

これでアクセス

Hoge.i

短くていいや