FlashとSingletonパターン

Singleton(シングルトン)パターンは、インスタンスを絶対に1つしか持たないクラスを設計し、そのインスタンスにプロジェクト内のデータ管理を一極集中でマネージメントさせる手法。

まぁ管理するほどデータが多くない場合や、p172, 173のような擬似Singletonパターンでも、力技的でアリといえばアリなのだけど、やはりSingletonパターンを採用する理由を挙げるならば、唯一の存在であると保証されているインスタンスでデータ管理することの安心感を、制作者本人だけでなく、プロジェクトメンバーの共通認識として保障しておけるのがメリットな感じです。あと、コードもスマートですし。

クラス設計の考え方の核となるのが、p176のコード。

  • まず、コンストラクタは private にしておくことで、外部からインスタンス生成できないようにブロックしておく。
  • じゃあどうやって生成するのよ?ということで、 publicstatic なgetInstanceメソッドを用意。publicなので、flaや他asファイル等からの呼び出しが可能。static宣言により、クラスメソッド扱いになるので、var mySingleton:Singleton = Singleton.getInstance(); と呼び出せます。
  • getInstanceメソッド内部では、Singletonインスタンスが既に存在しているかどうかをチェックし、存在していなければインスタンス生成、存在してれば作らないことを保障してくれます。存在判定にはコード先頭で定義しておいた privatestatic なSingletonインスタンス参照(変数名:instance)を利用。これはクラスファイル外からはコントロールできないので、偽装される心配はありません。

次に、p177からは実用例を紹介。Observerパターンで作った「参加者リスト表示サンプル」を発展させ、参加者が出席する複数のミーティングルームをSingletonインスタンスで管理するサンプルを作成する。

データホルダーとしてSingletonインスタンス(あとで作るflaで、myMeetingManagerと命名)を利用。そのインスタンスに、{name,instance}のオブジェクトを要素として格納する配列 meetingRooms を定義する。
(作例ではMeetingRoomManagerクラスの)インスタンスメソッド getMeetingRoom は、引数として受け取ったミーティングルーム名のインスタンスを返す仕組みになっていて、これによって、プロジェクトからのMeetingRoom(p179)インスタンスへのアクセスを上手に処理できる。

以上でSingletonパターンのまとめを終わりますが、正直、今後の案件で、パッと作るべき仕様を見せられた時に、作例のようなデザインパターンがひらめくかどうかは自信がありません。場数を踏んで、そういう勘所を身に付けないといけませんね。
この作例はサンプルということで管理するデータも少なくなっていますが、大きなプロジェクトになってくると、Singleton×Observerパターンである効率性が高まるのでしょうね。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.trick7.com/blog/2007/01/07-082232.php/trackback
Listed below are links to weblogs that reference
FlashとSingletonパターン from trick7
AS3習得本
AS3の全容を学習できる本。この中でどれか1冊自分に合ったものを。
Adobe Flash CS4 詳細!ActionScript3.0入門ノート ActionScript3.0 プロフェッショナルガイド 初めてのActionScript 3.0 Flashユーザーのためのステップアップガイド 詳説 ActionScript 3.0 Actionscript 3.0 Cookbook
AS3発展本
ASでアニメーションさせる面白さを知るための本。
Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] ActionScript 3.0 アニメーション AdvancED ActionScript 3.0 Animation (Advanced)
AS2
"Flash"ではなく"ActionScript2.0"学習のための良著。他にもいろいろ読んだけど、この4冊を読んだ後、自分が成長できた感じがしました。
FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付] Essential Actionscript 2.0 Flash 8 Essentials Foundation Actionscript Animation: Making Things Move (Foundation)

あわせて読みたいブログパーツ

相互リンク

hi-posiさん
携帯Flashといえばhi-posiの岡田昇三さん。FlashLiteの有益な記事もたくさん書かれていていつもお世話になってます。ついにご挨拶させていただきました。面白すぎる人でしたw。

Return to page top