迪米特法則: 一個軟件實體應當儘量少地與其它實體發生相互做用.函數
若是一個系統符合迪米特法則, 那麼當其中某一個模塊發生修改時, 就會盡可能少地影響其餘模塊, 擴展會相對容易, 這是對軟件實體之間通訊的限制, 迪米特法則要求限制軟件實體之間通訊的寬度和深度. 迪米特法則可下降系統的耦合度, 使類與類之間保持鬆散的耦合關係..net
迪米特法則還有幾種定義形式, 包括: 不要和"陌生人"說話, 只與你的直接朋友通訊等, 在迪米特法則中, 對於一個對象他的朋友包括如下幾類:設計
任何一個對象, 在知足上面的條件之一, 就是當前對象的朋友, 不然就是陌生人. 在應用迪米特法則時, 一個對象只能與直接朋友發生交互, 不要和陌生人發生直接交互, 這丫很難過作能夠下降系統的耦合度, 一個對象的改變不會給太多其餘度夏寧帶來影響.對象
迪米特法則要求咱們在設計系統時候, **應該儘可能減小系統之間的交互, 若是兩個對象之間沒必要彼此直接通訊, 那麼這兩個對象就不該該發生任何的直接的相互做用, 若是其中一個對象須要調用另外一個對象的某一個方法, 能夠經過第三者轉發這個調用. **簡言之. 就是經過引入一個合理的第三者來下降現有對象之間的耦合度.blog
在將迪米特法則運用到系統設計中時候, 要注意如下幾點: 在類的劃分上, 應當儘可能建立鬆耦合的類, 類之間的耦合度越低, 就越有利於複用, 一個處於鬆耦合的類一旦被修改, 不會對關聯的類形成太大的波及; 子啊類的結構設計上, 每個類都應該儘可能下降其成員變量和成員函數的訪問權限; 在類的設計上, 只要有可能, 一個類型應當被設計成不變類; 在對其它類的引用上, 一個對象對其它對象的引用應當降到最低.get
更多詳情請參考原文:io
Reference: http://blog.csdn.net/lovelion/article/details/7563445變量