デザインパターンに目覚める
2008/08/26 20:56 - デザインパターン
この世にはデザインパターンというものが存在する、ということは漠然と知っていましたが、デザインパターンとは何なのか、どういった効果があるのか、といった、さらなる知識を積極的に求めようとせずに今まで生きてきました。
シングルトンだけはわりと目にする機会が多かったんで少しは知っていたんですが、自分的に使い道のない概念だったんでずっとスルー。
さて先日のこと。 ネット巡りをしていたら、GoF デザインパターンについて書いてあるページに辿り着きました。
さらっと目を通してみたところ、あるパターンに運命の出会いを感じた!
その名はイテレータ。
以前も書いた記憶がありますが、私が作るフラッシュ小品の基本動作はどいつもこいつもほぼ同じ。 同一型のオブジェクトを複数生成し、それら全部に対して何らかの動きをさせる、というものです。
たとえば、モーションタイポなら文字オブジェクトを複数生成しておいて、マウスクリックイベントで全文字オブジェクトの動作開始、といった具合。
実際の機構としては、文字オブジェクト群を Array に突っ込んで、for なり while なりで Array 全件舐めることで全ての文字オブジェクトへ動作を命令します。 下記みたいな感じですね。
(1)格納部 var オブジェクト格納配列 = new Array(); var オブジェクト数:uint = n; for ( var i:uint=0; i<オブジェクト数; i++ ) { オブジェクト格納配列.push( new 文字クラス() ); } … … … (2)動作部 for ( i=0; i<オブジェクト数; i++ ) { var 文字オブジェクト:文字クラス = オブジェクト格納配列[i]; 文字オブジェクト.motion(); } あるいは var num:uint = オブジェクト格納配列.length; while(num--){ var 文字オブジェクト:文字クラス = オブジェクト格納配列[num]; 文字オブジェクト.motion(); }
格納部はこういう記述をせざるを得ないと思うので、特に疑問を感じることなく過ごしてきました。 しかし動作部の方はもちっとスッキリならんもんか、と漠然とながら考えていたのです。
オブジェクト数(配列長)をコーダが意識しなくちゃいけない部分のことね。 舐めるのは Array の中身全部なんだから、わざわざ何件格納されているなんて意識したくないものでしてよ。
そんなモヤモヤした気分を一気に日本晴れにしてくれる、オレ的に手放せなくなる予感ナンバーワンなデザインパターン、それがイテレータです。惚れた!
これを取っ掛かりに他のパターンもいろいろ研究してみたいと思いますが、とりあえず俺カスタムなイテレータ作成に取り組んでみました以下次回。