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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

html5中meter讲解_Java中的得墨meter耳定律–最少知识原理–实际示例

發布時間:2023/12/3 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html5中meter讲解_Java中的得墨meter耳定律–最少知识原理–实际示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

html5中meter講解

得墨meter耳定律(也稱為最少知識定律)是一種編碼原理,它表示模塊不應該知道其操作的對象的內部細節。 如果代碼取決于特定對象的內部細節,則很有可能一旦該對象的內部發生更改,它就會中斷。 由于封裝是關于隱藏對象的內部細節并僅公開操作的,因此它也聲明了Demeter定律 。 許多Java程序員都犯了一個錯誤,那就是它使用getter方法公開了對象的內部細節,而這正是知識最少的原則提醒您的地方。 在閱讀一本必讀的編程書 《羅伯特·C·馬丁的清潔代碼》時 ,我首先了解了這一原理。 除了本書教給您的許多好處之外, “最起碼的原則”是一個原則,我至今仍然記得。 像許多壞事一樣,由于以流利的方式編寫的方法的優美鏈接,您將極力違反《德米特律法》。 從表面上看,它看起來不錯,但是一旦您想到了最少知識的原理,您就會開始看到真實的圖畫。 在本文中,我們將看到Demeter定律的正式定義,并探索違反該原理的代碼段。

根據Demeter定律,對象O的方法M應該僅調用以下類型的方法:

  • 對象O本身的方法
  • 作為參數傳遞的Object方法
  • 對象的方法,保存在實例變量中
  • 在方法M中本地創建的任何對象
  • 更重要的是,方法不應在上面指定的任何后續方法調用返回的對象上調用方法,正如Clean Code所說的“與朋友交談,而不是與陌生人交談”。 除了了解面向對象編程的基本概念(例如抽象 , 多態 , 繼承和SOLID設計原理)外 ,還值得了解像這樣的有用原理,它是通過經驗發現的。 在下面的示例中,我們將看到一種方法如何違反上述規則以違反定界符定律。

    public class LawOfDelimterDemo {/*** This method shows two violations of "Law of Delimiter" or "Principle of least knowledge".*/public void process(Order o) {// as per rule 1, this method invocation is fine, because o is a argument of process() methodMessage msg = o.getMessage();// this method call is a violation, as we are using msg, which we got from Order.// We should ask order to normalize message, e.g. "o.normalizeMessage();"msg.normalize();// this is also a violation, instead using temporary variable it uses method chain.o.getMessage().normalize();// this is OK, a constructor call, not a method call.Instrument symbol = new Instrument();// as per rule 4, this method call is OK, because instance of Instrument is created locally.symbol.populate(); } }

    您可以看到,當我們獲取Order類的內部并在該對象上調用方法時,便違反了delimiter的Law ,因為現在此方法知道Message類。 另一方面,調用Order對象的方法很好,因為它作為參數傳遞給了該方法。 此圖像很好地說明了遵循Demeter定律需要做什么。

    讓我們看看另一個違反Demeter法則的代碼示例,它如何影響代碼質量。

    public class XMLUtils {public Country getFirstBookCategoryFromXML(XMLMessage xml) { return xml.getXML().getBooks().getBookArrary(0).getBookHeader().getBookCategory();} }

    現在,此代碼取決于許多類,例如
    XML消息
    XML格式 書 書頭 圖書類別

    這意味著此函數了解XMLMessage,XML,Book,BookHeader和BookCategory。 它知道XML具有
    Book,依次具有BookHeader和內部具有BookCategory,這是很多信息。 如果此鏈接方法調用中的任何中間類或訪問器方法發生更改,則此代碼將中斷。 此代碼高度耦合且脆弱。 最好將查找內部數據的責任放入擁有它的對象中。 如果仔細觀察,應該只調用getXML()方法,因為它的方法來自XMLMessage類,該方法作為參數傳遞給方法。 與其將所有這些代碼都放入XMLUtils中,不如放在BookUtils或類似的東西上,它們仍然可以遵循Demeter的定律并可以返回所需的信息。

    翻譯自: https://www.javacodegeeks.com/2014/06/law-of-demeter-in-java-principle-of-least-knowledge-real-life-example.html

    html5中meter講解

    總結

    以上是生活随笔為你收集整理的html5中meter讲解_Java中的得墨meter耳定律–最少知识原理–实际示例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。