As3でSingletonを実装するときのメモです。
Singletonとは
Singletonとは、インスタンスを1つしか生成しないようにする手法です。デザインパターンというプログラミングの考え方があるのですが、その中のひとつです。
これのメリットは異なるクラス間で同じデータのやり取りができるという点です。通常はクラスを生成→引数でデータを渡して何たら…のような手続きが必要ですが、Singletonでデータ保持用のクラスを作っておけば便利にデータを引き出せるのです…!
例えるならば、渡辺さんという人がいるとしましょう。
・Singletonの場合 同姓の渡辺さんがいたとしても本人は世界に一人だけなので、 道で転んでもその渡辺さんしか転ばない ・Singletonじゃない場合 みんな同じ渡辺さんとして扱うので、 道で転んだらみんな一緒に転んでしまう
何を言っているかさっぱりだぜ!っていう方もいるかもですが、とりあえず重要な言葉なのでSingletonという言葉だけでも覚えておくと良いかと思います。
ていうか人って同じ過ちを繰り返すものなんですね。4年半前に同じ内容のブログ記事を書いていました。。全く進歩していないな、自分。
参考
コード例
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だろうが色々使えるかと思います。
例えばゲームのスコア保持用のクラスとか!