2011年7月24日日曜日

Iteratorパターン

注意:

  • この記事は適当に書かれています。あとでドリーが綺麗にまとめてくれます。
  • この記事はC#erな人が書いています。

現在デザインパターンを勉強中なのですが,さて,デザインパターンの中で一番を選ぶとしたら一体なんなのでしょうか。私が思うにそれはIteratorパターンでしょう。Iteratorパターンはプログラムを書く中で,最もよく使われ,最も直接目にすることはなく,今でも最もHOTなパターンです。

このパターンは集合に対し統一的にアクセスする時によく使われる実装を形式的にまとめたものでした。しかし今ではJavaを初めとし様々な言語でその実装を隠蔽しforeachとして利用できるようになっています。



Iteratorパターンは何故よく使われるのか,それは集合に対して汎用的に利用できるパターンだからでしょう。しかし最近ではメソッドチェーンと呼ばれるプログラムの書き方が流行り,集合に対する操作は今まで以上にエレガントに表現されるようになりました。

http://www.atmarkit.co.jp/fdotnet/chushin/comparedataproc_01/comparedataproc_01_01.html

今までのプログラムと見た目がぜんぜん違う!でも大丈夫,内部的には普通にIteratorパターンが使われています。Iteratorは不滅です。Javaはエレガントな言語じゃないので今まで通りifと一緒に拡張for文(Java5.0より追加された構文)を使ってください。



Iteratorパターンはよく内部イテレータと外部イテレータに分けて説明されます。多くの言語では外部イテレータの利用が言語レベルでサポートされています。では内部イテレータはどこで使われるのでしょうか。実は別のパターン,Observerパターンに姿を変えて利用されることがあります。

Observerは例えばマウス座標の監視などに使われます。でもよく考えるとObserverは連続で通知されるマウスの座標というデータを順に処理しているだけです。そう,これはIteratorパターンと同様なのです。Iteratorパターンがデータをpullして処理しているのに対し,Observerは向こうからデータがpushされる,ただそれだけの違いです。
さて,そんな事が真面目に研究されているプロジェクトがあります。その名もReactiveExtension.ちょっと調べてみるとpull型をpush型に変えるだけでこれだけの違いが現れるのかとびっくりします。

発端の映像はこちら(英語でココだけ見ても普通のことしか言ってないように見える)
http://channel9.msdn.com/blogs/charles/erik-meijer-rx-in-15-minutes
Reactive Exntensionがむっちゃ詳しいブログ
http://neue.cc/

ここらへんを見るとウヒョーとなれること,請け合いです。

0 件のコメント:

コメントを投稿