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

歡迎訪問 生活随笔!

生活随笔

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

java

Java的String类是上帝的对象吗?

發布時間:2023/12/3 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的String类是上帝的对象吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
10月,我寫了一個博客,題為“上帝對象中的頂級特朗普”,其中談到了用167種不同的方法發現的對象的發現,這些方法將該對象與應用程序的所有其他部分鏈接在一起,并且正如您所期望的那樣,上帝或怪物物的一般標準。 最近向我指出,僅方法計數并不表示一個對象是上帝對象 ,這是真的。 該注釋還繼續將String類定位為一個對象,該對象不是God Object,但具有大量方法。

這讓我開始思考:就面向對象設計的一般規則而言,String類是設計良好的類嗎? 實際上,它是否違反了單一責任原則或demeter的法律,并且是否與應用程序的所有其他部分緊密耦合? 它是上帝的對象嗎?

回答此問題的簡單方法是根據“單一職責原則”查看字符串 ,而做到這一點的最佳方法是計算其擁有的方法調用的數量并弄清楚它們的作用。

如果這樣做,您會發現Java的String類中有66個方法調用,并且您可能會得出這樣高的數字可能是God Object的第一個跡象。

接下來,如果您查看這66個方法調用,則可以將它們分為幾個不同的責任領域。 例如,有:

轉換方式

  • getBytes(...)
  • getChars(...)
  • 的價值(...)
  • toUpperCase(...)
  • toLowerCase(...)
  • toCharArray(...)


分割String的方法

  • 子串(...)
  • 分裂(...)
  • subSequence(...)


等效方法

  • 等于(...)
  • 火柴(...)
  • 相比于(...)


搜索方式

  • 指數(..)
  • lastIndexOf(...)
  • charAt(...)
  • 包含(...)


組合方法

  • 附加(...)
  • concat(..)
  • +
  • + =

……還有更多。

使用上面的列表,您現在可以為類似于以下內容的String編寫CRC卡:“ String負責將其自身與其他String組合以創建新的String ,并將其自身轉換為其他對象或對象數組并進行拆分本身分成不同的部分,并將其與其他String對象進行比較,并對其進行搜索”

堅持法律原則,上面的列表顯示String的方法調用至少分為五個責任領域,這意味著從書上講,違反了單一責任原則。

得出合理的結論,那么您可以重構String使其看起來像這樣……。

但是,這就是問題,為什么Java的String類不是由一些數據和一堆在其上操作的類組成的? 答案既是見解又是多方面的。 首先,歷史……隨著時間的流逝,Java以及String類的發展也是如此。 隨著Java版本號的不斷提高,這些方法也被逐行添加。 第二,實用主義。 當前設計中的String對象可能會違反“單一職責規則”,但這并不重要,將其保留原樣并繼續編寫重要的程序會更容易。 最后,我認為這很重要,我們通常都知道String是什么。 它的名稱和含義是常用的。 如果我們必須定義String負責使用CRC卡的方式,那么我們將編寫如下內容:“ String負責成為s String ”。

字符串可能有66種方法,但我相信,按照一般共識,它不是上帝的對象。 但是,軟件只是一種意見問題,因此,我將讓您回答我在本博客開頭提出的其他問題,并讓您下定決心……

參考: Java的String類是上帝對象嗎? 來自我們的JCG合作伙伴 ? 調試隊長博客的 Roger Hughes。


翻譯自: https://www.javacodegeeks.com/2012/02/is-javas-string-class-god-object.html

總結

以上是生活随笔為你收集整理的Java的String类是上帝的对象吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

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