単方向関連の双方向への変更
概要
2つのクラスが互いに相手を利用するのに、単方向の関連しかないというとき、
双方向の関連を作り、その関連を保ち続けるようにする
リファクタリング時期
どうしても必要な場合のみ
手順
逆参照するためのフィールドを作る
どちらのクラスが関連に対するコントロールを持つか決める
両方が参照オブジェクトで、関連が1対多: 1の参照を持つクラスが担当
両方が参照オブジェクトで、関連が多対多: どちらが担当してもいい
一方のオブジェクトが他方の構成要素: 集約側が担当
関連を持たない側にヘルパーメソッドを作る(そのメソッドが制限付きで使用されていることがわかるメソッド名にする)
既存の更新操作がコントロール側にあるなら、逆参照を更新するように変更
既存の更新操作がコントロールされる側になるなら、コントロールする側にメソッドを作り、既存の更新操作から作成したメソッドを呼ぶ
#refactoring-chapter8