动机(Motivation)
双向关联(bidirectional associations)很有用,但你也必须为它付出代价,那就是[维护双向链接,确保对象被正确创建和删除]而增加的复杂度.而且,由于很多程序员并不习惯使用双向关联,它往往成为错误之源.
大量的双向连接(two-way links)也很容易引发[僵尸对象]:某个对象本来已经该死亡了,却仍然保留在系统中,因为对它的各项引用还没有完全清除.
此外,双向关联也迫使两个classes之间有了相依性.对其中任一个class的任何修改,都可能引发另一个class的变化.如果这两个classes处在不同的package中,这种相依性就是packages之间的相依.过多的依存性(inter-dependencies)会造成就紧耦合(highly coupled)系统,使得任何一点小小改动都可能造成许多无法预知的后果.
只有在你需要双向关联的时候,才应该使用它.如果你发现双向关联不再有存在价值,就应该去掉其中不必要的一条关联.