コレクションのカプセル化
概要
変更可能なコレクションを返す getter がある場合に、それを変更不可にする
さらに、変更専用のメソッドを別に提供する
リファクタリング時期
hoge.getHoge().add(fuga)のようにコレクションを操作しているのを見つけたとき
手順
コレクションに対する追加と削除のメソッドを作る
フィールドを空のコレクションで初期化する
コンパイルしてテスト
set メソッドの呼び出し元を探し、そのメソッドを変更して追加・削除の操作を行わせるように変更する
あるいは set メソッドではなく追加・削除のメソッドを呼ばせるように変更する
コンパイルしてテスト
コレクションを変更するために get メソッド を使用している部分(hoge.getHoge().add(fuga)など)を探し、追加・削除のメソッドを呼ばせるように変更(1つ置き換えるごとにコンパイルしてテスト)
#refactoring-chapter8