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();
やっぱ、これが使えると楽だなー、自分は。
【追記】
getterをstaticで定義できることを知り、更に適当さがパワーアップしました
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
短くていいや