日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件设计原则(六)迪米特法则 -Law of Demeter

發(fā)布時間:2024/1/23 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件设计原则(六)迪米特法则 -Law of Demeter 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

LoD,Law of Demeter:

又稱最少知識原則(Least Knowledge Principle),一個對象應(yīng)該對其他對象有最少的了解

一個類對自己依賴的類知道的越少越好。也就是說,對于被依賴的類來說,無論邏輯多么復(fù)雜,都盡量地的將邏輯封裝在類的內(nèi)部,對外除了提供的public方法,不對外泄漏任何信息。

問題由來:

????????類與類之間的關(guān)系越密切,耦合度越大,當(dāng)一個類發(fā)生改變時,對另一個類的影響也越大。

解決方案:

??????? 迪米特法則包含4層含義:

??????? 1)只和朋友交流

????????Only talk to your immediate friends.兩個對象之間的耦合就成為朋友關(guān)系。即,出現(xiàn)在成員變量、方法輸入輸出參數(shù)中的類就是朋友;局部變量不屬于朋友。

--> 不與無關(guān)的對象發(fā)生耦合!

????????方針:不要調(diào)用從另一個方法中返回的對象中的方法!只應(yīng)該調(diào)用以下方法:

  • 該對象本身的方法
  • 該對象中的任何組件的方法
  • 方法參數(shù)中傳入的對象的方法
  • 方法內(nèi)部實例化的對象的方法

????????例如:Teacher類可以命令TeamLeader對Students進行清點,則Teacher無需和Students耦合,只需和TeamLeader耦合即可。

反例:

  • public?float?getTemp(){??
  • ?????Thermometer?t?=?station.getThermometer();??
  • ?????return?t.getTemp();??
  • }??
  • 客戶端不應(yīng)該了解氣象站類中的溫度計對象;應(yīng)在氣象站類中直接加入獲取溫度的方法。改為:

  • public?float?getTemp(){??
  • ?????return?station.getTemp();??
  • }?
  • ????????2)朋友間也應(yīng)該有距離

    ????????即使是朋友類之間也不能無話不說,無所不知。

    --> 一個類公開的public屬性或方法應(yīng)該盡可能少!

    ????????3)是自己的就是自己的

    ????????如果一個方法放在本類中也可以、放在其他類中也可以,怎么辦?

    --> 如果一個方法放在本類中,既不增加類間關(guān)系,也對本類不產(chǎn)生負(fù)面影響,就放置在本類中。

    ??????? 4)謹(jǐn)慎使用Serializable

    ????????否則,若后來修改了屬性,序列化時會拋異常NotSerializableException。

    建議:

    ????????迪米特法則的核心觀念是:類間解耦。

    ??????? 其結(jié)果是產(chǎn)生了大量中轉(zhuǎn)或跳轉(zhuǎn)類。

    總結(jié)

    以上是生活随笔為你收集整理的软件设计原则(六)迪米特法则 -Law of Demeter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。