2013.09.9 01:21

AS3でSingletonパターンの実装

カテゴリー:Flash

タグ:

As3でSingletonを実装するときのメモです。

Singletonとは

Singletonとは、インスタンスを1つしか生成しないようにする手法です。デザインパターンというプログラミングの考え方があるのですが、その中のひとつです。

これのメリットは異なるクラス間で同じデータのやり取りができるという点です。通常はクラスを生成→引数でデータを渡して何たら…のような手続きが必要ですが、Singletonでデータ保持用のクラスを作っておけば便利にデータを引き出せるのです…!

例えるならば、渡辺さんという人がいるとしましょう。

・Singletonの場合
 同姓の渡辺さんがいたとしても本人は世界に一人だけなので、
 道で転んでもその渡辺さんしか転ばない
・Singletonじゃない場合
 みんな同じ渡辺さんとして扱うので、
 道で転んだらみんな一緒に転んでしまう

何を言っているかさっぱりだぜ!っていう方もいるかもですが、とりあえず重要な言葉なのでSingletonという言葉だけでも覚えておくと良いかと思います。

ていうか人って同じ過ちを繰り返すものなんですね。4年半前に同じ内容のブログ記事を書いていました。。全く進歩していないな、自分。

参考

[AS3]AS3でSingletonを実装

コード例

Singletonクラス


class Singleton {

  public static var instance:Singleton = new Singleton();
  public var test:String = 'test';

  public function Singleton() {
     if (instance) {
       throw new ArgumentError('外部からインスタンス化できません。');
     }
  }

  public static function getInstance():Singleton {
    return instance;
  }

}

呼び出し例


var s:Singleton = Singleton.getInstance();
s.test = 'aiueo';

var s2:Singleton = Singleton.getInstance();

// aiueoが表示される。Singletonにしないとtestが表示されてしまう。
trace(s2.test);

今回はAS3での書き方でしたが、Singleton自体は先程も申し上げたようにすごく便利な手法なので、PHPだろうがJavaScriptだろうが色々使えるかと思います。

例えばゲームのスコア保持用のクラスとか!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>