Collecting Parameter の特徴
巡回するオブジェクトの戻り値をベースに目的のデータを構築するのではなく、パラメータに渡したオブジェクトを使ってデータを構築する。
- 戻り値となるオブジェクトのインスタンス化を防ぐことができるので、コードの実行速度が上がる。
- 戻り値をベースにしたデータ構築よりも、より柔軟なタイミングでデータの構築が行える(例えば、メソッドの実行途中で結果を append できる)ようになり、コードを分割しやすくなる。
参考文献: 『パターン思考リファクタリング入門』
第10章 累積処理
Collecting Parameter を使わない場合の実装例
Collecting Parameter を使う場合の実装例
巡回される要素の方で、Collecting Parameter を使ってデータを構築します。
巡回される要素側にデータ構築のためのコードが含まれてしまうのを防ぎたい場合は、 Visitor パターン を使用し、呼び出し側に処理を委譲するようにします。
関連記事