国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java依賴-關(guān)聯(lián)-聚合-組合之間區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

Java依賴-關(guān)聯(lián)-聚合-組合之間區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

2020-12-13 20:22動(dòng)力節(jié)點(diǎn) Java教程

這篇文章主要介紹了Java依賴-關(guān)聯(lián)-聚合-組合之間區(qū)別理解,依賴關(guān)系比較好區(qū)分,它是耦合度最弱的一種,下文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

首先看一看書上對(duì)這四種關(guān)系的定義:

  • 依賴(Dependency)關(guān)系是類與類之間的聯(lián)接。依賴關(guān)系表示一個(gè)類依賴于另一個(gè)類的定義。例如,一個(gè)人(Person)可以買車(car)和房子(House),Person類依賴于Car類和House類的定義,因?yàn)镻erson類引用了Car和House。與關(guān)聯(lián)不同的是,Person類里并沒有Car和House類型的屬性,Car和House的實(shí)例是以參量的方式傳入到buy()方法中去的。一般而言,依賴關(guān)系在Java語言中體現(xiàn)為局域變量、方法的形參,或者對(duì)靜態(tài)方法的調(diào)用。
  • 關(guān)聯(lián)(Association)關(guān)系是類與類之間的聯(lián)接,它使一個(gè)類知道另一個(gè)類的屬性和方法。關(guān)聯(lián)可以是雙向的,也可以是單向的。在Java語言中,關(guān)聯(lián)關(guān)系一般使用成員變量來實(shí)現(xiàn)。
  •  聚合(Aggregation) 關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系。聚合是整體和個(gè)體之間的關(guān)系。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關(guān)系便整體和個(gè)體的關(guān)系。與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實(shí)例變量實(shí)現(xiàn)的。但是關(guān)聯(lián)關(guān)系所涉及的兩個(gè)類是處在同一層次上的,而在聚合關(guān)系中,兩個(gè)類是處在不平等層次上的,一個(gè)代表整體,另一個(gè)代表部分。
  •  組合(Composition) 關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系強(qiáng)的關(guān)系。它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分對(duì)象的生命周期,組合關(guān)系是不能共享的。代表整體的對(duì)象需要負(fù)責(zé)保持部分對(duì)象和存活,在一些情況下將負(fù)責(zé)代表部分的對(duì)象湮滅掉。代表整體的對(duì)象可以將代表部分的對(duì)象傳遞給另一個(gè)對(duì)象,由后者負(fù)責(zé)此對(duì)象的生命周期。換言之,代表部分的對(duì)象在每一個(gè)時(shí)刻只能與一個(gè)對(duì)象發(fā)生組合關(guān)系,由后者排他地負(fù)責(zé)生命周期。部分和整體的生命周期一樣。

——摘自《Java面向?qū)ο缶幊獭?/p>

       以上關(guān)系的耦合度依次增強(qiáng)(關(guān)于耦合度的概念將在以后具體討論,這里可以暫時(shí)理解為當(dāng)一個(gè)類發(fā)生變更時(shí),對(duì)其他類造成的影響程度,影響越小則耦合度越弱,影響越大耦合度越強(qiáng))。由定義我們已經(jīng)知道,依賴關(guān)系實(shí)際上是一種比較弱的關(guān)聯(lián),聚合是一種比較強(qiáng)的關(guān)聯(lián),而組合則是一種更強(qiáng)的關(guān)聯(lián),所以籠統(tǒng)的來區(qū)分的話,實(shí)際上這四種關(guān)系、都是關(guān)聯(lián)關(guān)系。

        依賴關(guān)系比較好區(qū)分,它是耦合度最弱的一種,在java中表現(xiàn)為局域變量、方法的形參,或者對(duì)靜態(tài)方法的調(diào)用,如下面的例子:Driver類依賴于Car類,Driver的三個(gè)方法分別演示了依賴關(guān)系的三種不同形式。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Car {
  public static void run(){
    System.out.println("汽車在奔跑");
  }
}
class Driver {
  //使用形參方式發(fā)生依賴關(guān)系
  public void drive1(Car car){
    car.run();
  }
  //使用局部變量發(fā)生依賴關(guān)系
  public void drive2(){
    Car car = new Car();
    car.run();
  }
  //使用靜態(tài)變量發(fā)生依賴關(guān)系
  public void drive3(){
    Car.run();
  }
}

        關(guān)聯(lián)關(guān)系在java中一般使用成員變量來實(shí)現(xiàn),有時(shí)也用方法形參的形式實(shí)現(xiàn)。依然使用Driver和Car的例子,使用方法參數(shù)形式可以表示依賴關(guān)系,也可以表示關(guān)聯(lián)關(guān)系,畢竟我們無法在程序中太準(zhǔn)確的表達(dá)語義。在本例中,使用成員變量表達(dá)這個(gè)意思:車是我自己的車,我“擁有”這個(gè)車。使用方法參數(shù)表達(dá):車不是我的,我只是個(gè)司機(jī),別人給我什么車我就開什么車,我使用這個(gè)車。

?
1
2
3
4
5
6
7
8
9
10
11
12
class Driver {
  //使用成員變量形式實(shí)現(xiàn)關(guān)聯(lián)
  Car mycar;
  public void drive(){
    mycar.run();
  }
  ...
  //使用方法參數(shù)形式實(shí)現(xiàn)關(guān)聯(lián)
  public void drive(Car car){
    car.run();
  }
}

        聚合關(guān)系是是一種比較強(qiáng)的關(guān)聯(lián)關(guān)系,java中一般使用成員變量形式實(shí)現(xiàn)。對(duì)象之間存在著整體與部分的關(guān)系。例如上例中

?
1
2
3
4
5
6
7
class Driver {
  //使用成員變量形式實(shí)現(xiàn)聚合關(guān)系
  Car mycar;
  public void drive(){
    mycar.run();
  }
}

        假如給上面代碼賦予如下語義:車是一輛私家車,是司機(jī)財(cái)產(chǎn)的一部分。則相同的代碼即表示聚合關(guān)系了。聚合關(guān)系一般使用setter方法給成員變量賦值。

假如賦予如下語義:車是司機(jī)的必須有的財(cái)產(chǎn),要想成為一個(gè)司機(jī)必須要先有輛車,車要是沒了,司機(jī)也不想活了。而且司機(jī)要是不干司機(jī)了,這個(gè)車就砸了,別人誰也別想用。那就表示組合關(guān)系了。一般來說,為了表示組合關(guān)系,常常會(huì)使用構(gòu)造方法來達(dá)到初始化的目的,例如上例中,加上一個(gè)以Car為參數(shù)的構(gòu)造方法

?
1
2
3
public Driver(Car car){
  mycar = car;
}

        所以,關(guān)聯(lián)、聚合、組合只能配合語義,結(jié)合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關(guān)聯(lián),聚合,還是組合關(guān)系,則是無法判斷的。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚色一区 | 亚洲综合大片69999 | 自拍偷拍欧美 | av资源中文在线 | 国产精品一区二区久久 | 国产一区二区精品在线 | 亚洲免费影院 | 日韩三级av在线 | 中文字幕在线观看av | 久久成人国产精品 | 色九色| 国产老头老太作爱视频 | 人妖天堂狠狠ts人妖天堂狠狠 | 91福利视频免费 | 亚洲蜜桃精久久久久久久 | x99av成人免费| 天堂v视频永久在线播放 | 欧美一级二级视频 | 国产区视频在线观看 | 成人国产精品一级毛片视频 | 日韩一区二区三区视频 | 成人在线小视频 | 国产一级片儿 | www.青青草原 | 在线国产视频 | 精品一区二区在线观看 | 久久成人免费视频 | 亚洲成人在线观看视频 | 久久av综合网 | 性农村人freesex | 一区二区三区中文字幕 | 精品亚洲第一 | 一区二区三区精品视频 | 激情综合五月网 | 欧美亚洲综合久久 | 香蕉久久久久久 | 欧美激情一区二区三区 | 日韩精品一区二区三区第95 | 午夜精品久久久久久久久久久久 | 国产美女www爽爽爽免费视频 | 韩国av一区二区 |