Iterator(ちょうぜつ本)
クラスが概念の単位である例として紹介
ここでは、誰もが共通した意味を連想する名前、Iteratorパターンを紹介します。(Kindle版 p.317)
配列より抽象度の高い概念
フォルダのスキャン(配列としてメモリに展開できない場合もある)もIteratorで扱える
実体とは無関係
オンメモリの配列もストリーミング処理が向く大量データも同じ操作に一般化
感想:PythonのIterableに通じそう
反復可能 = Iterable は、さまざまなデータ構造 (型) に共通する、かなり上位の抽象概念 (型クラスとかかも) です。その概念の、人が触れることができる操作部分が Iterator なのです。
データ構造に対してハードコードする繰り返しでビジネスロジックを書いてしまうと、後で対象データの構造を変更したいときが大変です。
たとえば、単体テストでは固定数の素朴な配列を使っておき、本番ではストリーミングIOで非同期にデータが来る、みたいなの、やりたいじゃないですか。
「反復可能」という概念に着目して、繰り返しの実体にまつわる複雑さと、繰り返されるビジネスロジックとを分離するのです。
関心の分離!!
名前を持っている概念、その意味を共有して理解するのが、いちばん大事なとこですよ。