ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          動(dòng)機(jī)(Motivation)
          雙向關(guān)聯(lián)(bidirectional associations)很有用,但你也必須為它付出代價(jià),那就是[維護(hù)雙向鏈接,確保對(duì)象被正確創(chuàng)建和刪除]而增加的復(fù)雜度.而且,由于很多程序員并不習(xí)慣使用雙向關(guān)聯(lián),它往往成為錯(cuò)誤之源.

          大量的雙向連接(two-way links)也很容易引發(fā)[僵尸對(duì)象]:某個(gè)對(duì)象本來(lái)已經(jīng)該死亡了,卻仍然保留在系統(tǒng)中,因?yàn)閷?duì)它的各項(xiàng)引用還沒(méi)有完全清除.

          此外,雙向關(guān)聯(lián)也迫使兩個(gè)classes之間有了相依性.對(duì)其中任一個(gè)class的任何修改,都可能引發(fā)另一個(gè)class的變化.如果這兩個(gè)classes處在不同的package中,這種相依性就是packages之間的相依.過(guò)多的依存性(inter-dependencies)會(huì)造成就緊耦合(highly coupled)系統(tǒng),使得任何一點(diǎn)小小改動(dòng)都可能造成許多無(wú)法預(yù)知的后果.

          只有在你需要雙向關(guān)聯(lián)的時(shí)候,才應(yīng)該使用它.如果你發(fā)現(xiàn)雙向關(guān)聯(lián)不再有存在價(jià)值,就應(yīng)該去掉其中不必要的一條關(guān)聯(lián).
          posted on 2005-09-14 11:20 ivaneeo 閱讀(306) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): refactoring-從地獄中重生
          主站蜘蛛池模板: 微博| 安国市| 柘城县| 三都| 丹寨县| 龙山县| 广宗县| 舟曲县| 磐安县| 海丰县| 宜良县| 青龙| 锡林浩特市| 怀仁县| 嘉兴市| 宜兴市| 罗田县| 政和县| 临朐县| 温州市| 保亭| 府谷县| 浮梁县| 青田县| 界首市| 贺兰县| 广汉市| 双辽市| 当雄县| 洞头县| 施秉县| 多伦县| 吉安县| 新闻| 浠水县| 汕尾市| 万全县| 荥阳市| 米脂县| 咸阳市| 冀州市|