更新時(shí)間:2019-12-10 16:25:46 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2814次
什么是關(guān)系?
關(guān)系是指事物之間存在單向或雙向的作用或者影響的狀態(tài)。其中類與類之間要么有關(guān)系要么沒(méi)關(guān)系,感覺(jué)這句話有點(diǎn)說(shuō)的很無(wú)恥,誰(shuí)都知道,但是其中奧妙在于很難確定類與類之間是否有關(guān)系。證明兩個(gè)或者多個(gè)類是否存在關(guān)系涉及到業(yè)務(wù)、架構(gòu)、模塊邊界的問(wèn)題,然而由于業(yè)務(wù)模型的抽象角度不同而不同,確定他們是否有關(guān)系是一件很不簡(jiǎn)單的事情。
Java類有關(guān)系的6種情況
繼承:extends【is-a】
實(shí)現(xiàn):implements【can do】
組合:類是成員變量【contain-a】
聚合:類是成員變量【is-a】
依賴:是除了組合與聚合外的單向弱關(guān)系。比如使用一個(gè)類的屬性、方法,或以其作為方法的參數(shù)傳入,或以其作為方法的返回值輸出
【depends-a】
關(guān)聯(lián):相互是平等關(guān)系的依賴【links-a】
以上六種關(guān)系中繼承和實(shí)現(xiàn)是很容易辨別的關(guān)系。但是在設(shè)計(jì)過(guò)程中要注意組合、聚合、依賴和關(guān)聯(lián)這四個(gè)的區(qū)別。
繼承:
繼承關(guān)系包括子類和父類、子接口和父接口之間兩種繼承關(guān)系。用空心三角形和實(shí)線表示這種繼承關(guān)系。
實(shí)現(xiàn):
類和接口之間的關(guān)系,用空心三角形和虛線表示。
依賴:
A類會(huì)用到B類,這種關(guān)系具有偶然性,臨時(shí)性。但B類的變化會(huì)影響A類。這種在代碼中的體現(xiàn)為:A類方法中的參數(shù)包含了B類。 由虛線和箭頭表示
關(guān)聯(lián):
A類會(huì)用到B類,這是一種強(qiáng)依賴關(guān)系,是長(zhǎng)期的并非偶然。在代碼中的表現(xiàn)為:A類的成員變量中含有B類。
由實(shí)線和箭頭表示。
聚合:
關(guān)聯(lián)關(guān)系的一種特例,是整體和部分的關(guān)系,即has-a的關(guān)系。整體和部分之間是可分離的,擁有各自的生命周期。 和組合關(guān)系的整體和部分關(guān)系不同的是:該整體包含很多個(gè)部分,但這里的部分都是相同的。比如鳥(niǎo)群和鳥(niǎo)的關(guān)系是聚合關(guān)系,鳥(niǎo)群中每個(gè)部分都是鳥(niǎo)。由空心菱形和實(shí)線箭頭表示。
組合關(guān)系:
也是關(guān)聯(lián)關(guān)系的一種特例,它體現(xiàn)一種contains-a的關(guān)系,這種關(guān)系比聚合更強(qiáng),也稱為強(qiáng)聚合。它同樣體現(xiàn)整體與部分的關(guān)系,但這種整體和部分是不可分割的,他們具有相同的生命周期。 和聚合關(guān)系相比:這種部分和整體的關(guān)系表現(xiàn)為,整體包含該部分,但也包含其他部分,其他部分和該部分并不相同。比如cpu和計(jì)算機(jī)是組合關(guān)系,計(jì)算機(jī)包含cpu,但又不僅僅是cpu還有屏幕鍵盤(pán)等。其他的部分不和cpu是同樣的。 由實(shí)心菱形和實(shí)線箭頭表示。
以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“怎么理解Java中類之間的6種關(guān)系”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743