Search on the blog

2012年7月25日水曜日

デザインパターン(1) Iterator

まえおき
社内のプログラミング講師になったから、デザインパターンくらいは知っとかないとまずい。ということでもう一度復習することにした。去年の夏読んでいた『Java言語で学ぶデザインパターン入門』という本を最初から読み直していこうと思う。まずは、Iteratorパターンから。

まとめ
  • 集合体の要素を一つ一つ指し示し、全体をスキャンするときに使う。
  • 集合体のスキャン機能を集合体の実装から独立させることができる。

疑問点
  • Aggregate インターフェースにIteratorインターフェースで定義されている抽象メソッドを定義すれば同じような保守性(使用者側で変更が発生しない)は担保できるのでは?と思ったが、一つの集合体を異なる方法で数え上げたいときは別にIteratorとしてスキャン役を持っておいた方が便利か。Mapのスキャンとかだと、keyをスキャンしたい場合も、valueをスキャンしたい場合があるしね。コンポーネントの独立性という意味でAggregateとIteratorを別々に用意することには大きな利便性があると思う。と中盤くらいで考えていたら、最後の方の節の「複数のイテレータ」で似たような話が言及されていた。

その他
この本で強調されている「具体的なクラスを定義する前に、インターフェースを定義する。」というのはすごく大切だと思う。機能と実装を切り離すことで、クラスの使用者がクラスの実装を意識せずに済むというのは非常に大事。

0 件のコメント:

コメントを投稿