五大設計原則之(一)---迪米特法則


迪米特法則也稱最少知識原則,一個對象應該對其它對象有最少的了解。通俗也說:一個類應該對自己需要耦合或調用的類知道得最少。

在類方法的設計中可以堅持這樣的一個原則: 如果一個方法放在中,即不增加類間的關系,也對本類不產生負面影響,就放置本類中。

 廣義的迪米特法則:
    一個模塊設計的好壞的一個重要標志就是該模塊在多大程度上講自己的內部數據與實現的有關細節隱藏起來。
    一個軟件實體應當盡可能少的與其他實體發生相互作用。
    每一個軟件單位對其他的單位都只有最少的知識,而且局限於那些與本單位密切相關的軟件單位。
    迪米特法則的目的在於降低類與類之間的耦合。由於每個類盡量減少對其他類的依賴,因此,很容易使得系統的功能模塊功能獨立,是的相互間存在盡可能少的依賴關系。
    在運用迪米特法則到系統的設計中時,要注意以下幾點:
     第一:在類的划分上,應當創建弱耦合的類,類與類之間的耦合越弱,就越有利於實現可復用的目標。
    第二:在類的結構設計上,每個類都應該降低成員的訪問權限。
    第三:在類的設計上,只要有可能,一個類應當設計成不變的類。
    第四:在對其他類的應用上,一個對象對其他類的對象的應用應該降到最低。
    第五:盡量限制局部變量的有效范圍。

設計模式類圖:

 

 

 

最佳實現:

迪米特法則的做法觀念就是類間解耦,弱耦合,只有弱耦合了以后,類的復用率才可以提高,其要求的結果就是產生了大量的中轉或跳轉類,導致的復雜性提高,同時也為維護帶來了難度,所以在采用迪米特法則時需要反復權衡,既做到讓結構清晰,又做到高內聚低耦合。

  但是過度使用迪米特法則,也會造成系統的不同模塊之間的通信效率降低,使系統的不同模塊之間不容易協調等缺點。同時,因為迪米特法則要求類與類之間盡量不直接通信,如果類之間需要通信就通過第三方轉發的方式,這就直接導致了系統中存在大量的中介類,這些類存在的唯一原因是為了傳遞類與類之間的相互調用關系,這就毫無疑問的增加了系統的復雜度。解決這個問題的方式是:使用依賴倒轉原則(通俗的講就是要針對接口編程,不要針對具體編程), 這要就可以是調用方和被調用方之間有了一個抽象層,被調用方在遵循抽象層的前提下就可以自由的變化,此時抽象層成了調用方的朋友。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM