Iteratorパターン@Java言語で学ぶデザインパターン入門

Java画像

参考にした本

以下の書籍です。

その中から今回はItaratorパターンについて勉強したので、メモ。

Iteratorパターンとは?

この書籍の中ではItaratorパターンを以下のように説明していました。

for文でi++でiを1ずつ増加させていくと、現在注目している要素を「次」「その次」「またその次」に進めていることになります。

このようにしてiを増やして要素全体を最初から順番にスキャンしていることになります

ここで使われている変数iの動きを抽象化し、一般化したものをIteratorパターンとよぶ

Java言語によるデザインパターン

つまりよく見る以下のようなコードを抽象化してしまおうということですね。

何が嬉しいのか?

1:上記の冗長なfor文のコードを以下のように簡略化できます。

2:コードの再利用性が高まる

これはサンプルコードを見たのちに説明します。

サンプルコード

サンプルコードの全容はgithubに上げましたので参照ください。(初めて公開したので失敗してら教えてください)

また今回紹介するのは本を参考に自分なりに作ってみたプログラムです(流石に丸写しはダメだと思うので)

簡単な辞書のプログラムを作ってみようと思います。

Wordクラス

文字を記録して、取得するだけの簡単なクラス

Dictionaryクラス

wordを格納するクラスです。

Wordを繰り返し処理したいときにiteratorメソッドが呼び出されます。

DictionaryIteratorクラス

このクラスが肝になるクラス。

Wordを繰り返し処理したいときに呼び出されるメソッドが詰まっています。

Main文

出力

Iteratorパターンを使わない場合のfor文

こんな感じでなかなかめんどくさいし、バグが混入しやすいですね…

再利用性が高まる

main文のfor文を見ていただければわかりますが、for文自体型を意識していないので、

たとえDictionaryクラスでList<Word>の持ち方が変わったとしても、getWord()メソッドさえ持っていれば、main文はいじらなくてすみます:)

まとめ

自分で理解していても、文字に起こすのはすごく大変ですね。

何か間違っていたり、もっとこうするといいよなどあれば、教えていただきたいです!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


error: Content is protected !!