動機(Motivation)
雙向關聯(bidirectional associations)很有用,但你也必須為它付出代價,那就是[維護雙向鏈接,確保對象被正確創建和刪除]而增加的復雜度.而且,由于很多程序員并不習慣使用雙向關聯,它往往成為錯誤之源.
大量的雙向連接(two-way links)也很容易引發[僵尸對象]:某個對象本來已經該死亡了,卻仍然保留在系統中,因為對它的各項引用還沒有完全清除.
此外,雙向關聯也迫使兩個classes之間有了相依性.對其中任一個class的任何修改,都可能引發另一個class的變化.如果這兩個classes處在不同的package中,這種相依性就是packages之間的相依.過多的依存性(inter-dependencies)會造成就緊耦合(highly coupled)系統,使得任何一點小小改動都可能造成許多無法預知的后果.
只有在你需要雙向關聯的時候,才應該使用它.如果你發現雙向關聯不再有存在價值,就應該去掉其中不必要的一條關聯.