迪米特法則應用下的模式

在學習代碼的時候,我儘可能的去朝着高內聚低耦合的目標去寫,然後就出現了一些疑惑,與大家分享。

啥是迪米特法則?

    迪米特法則的初衷在於降低類之間的耦合。由於每個類儘量減少對其他類的依賴,因此,很容易使得系統的功能模塊功能獨立,相互之間不存在(或很少有)依賴關係。
    迪米特法則不希望類之間建立直接的聯繫。如果真的有需要建立聯繫,也希望能通過它的友元類來轉達。因此,應用迪米特法則有可能造成的一個後果就是:系統中存在大量的中介類,這些類之所以存在完全是爲了傳遞類之間的相互調用關係——這在一定程度上增加了系統的複雜度。

    上述的解釋,大家也應該能明白迪米特法則的利與弊了。

    如果你在編碼的路上,發現了這麼一回事:爲了實現功能A,則類X與類Y需要進行提供一些數據;爲了實現功能B,需要類X與類Z需要進行傳數據;最要命的是爲了實現某動態功能C,需要由用戶去確定那兩個類傳數據。那麼在這樣的情況下,可以採用迪米特法則,於是中介者模式就出現了。

    

靈活和簡單,孰重孰輕?

    利用迪米特法則,我們可以使代碼更加的靈活。同時,如果過度使用,會讓代碼維護起來更加的麻煩。如何去取捨關鍵是看個人,每個人的編碼方式不一樣。到時候就得根據功能和系統複雜度來設計了。
    這種設計理念可以不用,但是不可以不會。

    

區分模塊和類

    在想這個問題的時候,突然有了這樣的疑問:迪米特法則的存在,不就讓程序的耦合度提高了嗎?爲什麼要這樣?
    後來,明晰了這樣的事情:高內聚低耦合是指模塊間聯繫少,同一模塊高聯繫。迪米特法則不是指模塊間,而是對象之間,類之間的關係,所以並不會導致耦合變高。反而會因爲迪米特法則,讓程序變得靈活性強。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章