一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 關于Java中的繼承和組合的一個錯誤使用的例子

關于Java中的繼承和組合的一個錯誤使用的例子

2020-06-08 11:56anquye JAVA教程

這篇文章主要介紹了關于Java中的繼承和組合的一個錯誤使用的例子,需要的朋友可以參考下

相信絕大多數(shù)人都比較熟悉Java中的「繼承」和「組合」這兩個東西,本篇文章就主要就這兩個話題談論一下。如果我某些地方寫的不對,或者比較幼稚,論證不清晰,歡迎大家留言指正。

什么是「組合」和「繼承」

假設有2個class:AB:

  • 如果class A extends B 那么我們就說A繼承B,A是子類,B是父類,這種情況就是繼承。
  • 如果A中有一個屬性的類型為B,那么我們就說這種情況就是組合。
分別在什么情況下使用

回想一些我們一般會在什么情況下考慮這兩個東西呢?我大致想了一下,往往會有如下的場景:

  • 公用代碼
  • 為了表明事物之間的「共性」或者說僅僅為了「泛型」,抽取abstract class或者interface

我想來想去,好像真的只有這兩種情況了,但是這兩種情況有特別的有關聯(lián),比如說公用代碼這個事情,其實abstract classinterface(Java 8中的default method)都可以達到。

好吧,說了這么多屁話,我就直接拋出我的觀點吧,歡迎拍磚:

  • 如果你僅僅想公用代碼,而且使用這些公用代碼的class或者method并沒有很明顯的聯(lián)系,那么就請使用組合。
  • 如果若干個class或者其method有比較明顯的聯(lián)系,那么請抽取一個abstract class或者interface
  • 慎用「屬性繼承」的特性,建議子類明確復寫所需要的父類的屬性。這一點尤為重要,后續(xù)會有一個例子來說明這種情況的不利面。
反面教材

比較常見的一個例子:我們在實際的項目中,往往會定義好的的POJO或者說model,而這些model往往都會有一些名詞和類型相同的屬性,比如:

// db table primary key
private int id;

很常見吧,但是我在實際工作中遇到過不少的同事,系統(tǒng)定義一個名稱可能為BaseModel或者RootModel的類,把上面的屬性id放在里面,然后整個項目中所有的model都繼承這個BaseModdel類。不知道你們是否遇到過這樣的同事?你們覺的這樣寫能有什么好處和壞處呢?

先說好處吧,如果非要說能帶來什么好處的話,除了少敲幾下鍵盤,在子類中少些了這些屬性以外,沒看見有啥實質(zhì)性的好處。但是卻為項目后續(xù)的維護帶來了很麻煩的事情。

然后說這種寫法的潛在問題吧:

某一天,因為一些原因,你想找子類A(繼承了BaseModel)中的屬性id在項目中的哪些地方使用

機智的你熟練的使用起了IDE中的find usages,然后你就會發(fā)現(xiàn)你找到的使用位置非常的多,而且好多壓根不是你關心的。但是沒辦法,你也搜索到了其他的繼承了BaseModel的類的屬性id的使用位置。如果項目不大,可能搜索到的熟練比較少,如果項目大了一點呢?當搜索熟練超過了50處,你接下來會怎么做?

  • 一個一個看搜索出來的代碼,看了十幾二十個開始噴,然后繼續(xù)一個一個往下找?
  • 直接開始噴,然后在一個一個看搜索出來的代碼?

如何避免出現(xiàn)這種情況呢,那就是不要使用類似這種BaseModel的方式來使用屬性繼承。當然為了嚴謹期間,我還是需要詳細說一下這個意思,我并沒有完全反對屬性繼承哦,明確一下:

我反對的是整個項目所有的model繼承一個BaseModel,然后把公用屬性放在BaseModel中

的這種想法,注意是整個項目的

后記
上面的反面教材的例子我個人經(jīng)常會碰見,所以單獨拿出來說一下,我不確定在大家的項目中是否出現(xiàn)過這種情況。反正我已經(jīng)被同事的這種寫法坑過好多回了。

至于「組合」和「繼承」其他相關的常見錯誤,我暫時還沒想好(至少我覺的應該沒人會犯),如果我后續(xù)想清楚了,或者讀者朋友們有其他的建議希望可以留言交流一下哈。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品一区牛牛影视 | 国产福利一区二区三区四区 | 国产精品久久久久久影院 | 亚洲天堂免费看 | 狠狠燥| 久久精品嫩草影院免费看 | 亚洲图片综合网 | 国产91免费 | 無码一区中文字幕少妇熟女H | 好吊操这里有精品 | 男人亚洲天堂 | 男女刺激高清视频在线观看 | 草草免费观看视频在线 | 欧美艳星kagney1ynn | 亚洲AV无码乱码在线观看浪潮 | 女教师系列三上悠亚在线观看 | 欧美人体高清在线观看ggogo | 草草视频免费在线观看 | 日韩人成 | 视频在线观看高清免费 | 亚洲AV 日韩 国产 有码 | 男人与雌性宠物交啪啪小说 | 亚洲精品久久久打桩机 | 毛片网站大全 | 精品国产美女福利在线 | 丝瓜视频在线观看污 | 国产精品中文字幕 | 日韩免费毛片视频杨思敏 | 成人女人天堂午夜视频 | 红色一片在线影视 | 国产三级跑| 窝窝影院午夜色在线视频 | 亚洲福利一区二区精品秒拍 | 韩国最新三级网站在线播放 | 国产白白视频在线观看2 | 国产高清免费午夜在线视频 | 亚洲国产在线午夜视频无 | 青草青草伊人精品视频 | 久久99亚洲热最新地址获取 | 九九精品视频一区二区三区 | 亚洲香蕉伊在人在线观看9 亚洲系列国产系列 |