デザインパターンおさらい #1 Iterator
前回の続きで、Iteratorパターンについて説明します。 javaの勉強を兼ねて、javaでIterator可能なクラスを実装するための方法を紹介します。
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (399件) を見る
Iterator
ある集合体が存在する時に、その集合の要素全てを走査し、各要素に処理を行うためのパターンです。 for文で配列を走査する方法を、他の集合に対しても行えるように抽象化している。
for (int i = 0; i < list.size(); ++i) { process_element(list[i]); }
が
for( E element : list) { process_element(element); }
のようにかけるのです.
javaにおいて、AggreateインターフェースはIterableインターフェースである。 Iterableインターフェースはiteratorメソッドが定義されていて、それはIteratorを返す。 Iteratorインターフェースは
- +hasNext
- +next
- +remove
の3つを定義し、Iterableなクラスに対して実装することを義務付けます。
まあ、このパターンは有名で簡単ですね。
デザインパターンおさらい #0 UML
ちょくちょく虫食い勉強していたデザインパターンをおさらいしようと、有名なデザパタ入門書を読むことにしました。これから数回にわたって、読んだ感想とか大事だと思ったことを記録していこうと思います。なにか疑問や間違ってるところがあれば、コメントで指摘していただければ助かります。よろしくお願いします。
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (399件) を見る
UML
継承・実装
最初で紹介されている, 継承と実装の矢印の向きはいつもわからなくなります。 ここで紹介されている、
相手を指すことができるのは相手を知っているときだけです。
というのはすごくわかりやすいです。
- クラスの継承の際には、子クラスから親クラスに対して (実線)
- インターフェースの実装の際には、実装クラスからインターフェースに対して(点線)
矢印を引けばいいとわかります。
集約
あるインスタンスをメンバーとして所有する関係のことを集約と呼ぶ。
アクセス制御
- publie: +publicField, +publicMethod
- private: -privateField, -privateMethod
- protected: #protectedField, #protectedMethod
クラスの関連
クラス間の関連を表すために▶を用いる。
- ClientがTargetを使用: Uses▶
- FactoryがProductを生成: Creates▶
- SubjectがObserverに通知: Notifies▶