java聚合,Java聚合導航實戰項目

本文目錄一覽:

java中的組合與聚合,區別。。。詳細點

聚合就是:表示兩個對象之間是整體和部分的弱關係,部分的生命周期可以超越整體。如下:實例化Person,不一定要實例化Telephone。has a

public class Person{

private Telephone tel;

private Hand hand = new Hand();

…….

}

class Telephone{

……

}

組合:組合:表示兩個對象之間是整體和部分的強關係,部分的生命周期不能超越整體,或者說不能脫離整體而存在。組合關係的“部分”,是不能在整體之間進行共享的。如人和手的關係:人是整體,手是部分。is a 的關係 。手不能脫離人。

public class hand{

……

}

什麼是java聚合工程

聚合就是由很多節點合到一起的一個工程,但是每個節點不能獨立存在。有一個相對的概念叫組合,組合也有很多節點組成,但是它的每個節點可以獨立存在。

java 聚合和組合的區別?

組合:部分與整體是與生俱來的,部分的存在依賴於整體。比如人與人的某個器官,人一出生,器官就在,人死亡,器官也就沒了意義。

聚合:你與你的電腦(或者其它物品),電腦是屬於你的吧,但是你是一出生就擁有了電腦嗎,電腦是某個廠商生產出來的,然後你買過來才成為了你的一部分。你死了以後,電腦也可以送給別人繼續用啊!這就不叫做其存亡了,所以這是聚合。

這個是結合我之前看過的設計模式所想到的,如果你了解過設計模式,則會更容易明白我說的是什麼了,比如有一種設計模式叫做責任鏈模式,責任鏈中的處理者往往是先創建出來,然後再把引用傳到另一個責任處理對象作為責任接班人,這就用到了聚合的思想吧。

另外,《thinking in Java》裡面是這樣說的,“composing a new class from existing classes, this concept is called composition (if the composition happens dynamically, it’s usually called aggregation)”。

意思是通過現在的類組合成一個新的類,叫做組合,如果這種組合是動態的,則叫聚合。如何理解”動態“,也就是可以隨時加進來也可以隨時刪除,拿上面的人與電腦的例子來說,電腦可以隨時扔掉,也可以隨時加進來,人的生命不會受到威脅,但是人如果少了某個器官,則會危及到生命了!其實現實中的例子與Java中的概念還是有一點出入,類比只能是接近真相。

java怎麼理解組合/聚合關係給個例子最好能將細點

聚合(Aggregation) 關係是關聯關係的一種,是強的關聯關係。聚合是整體和個體之間的關係。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關係便整體和個體的關係。與關聯關係一樣,聚合關係也是通過實例變量實現的。但是關聯關係所涉及的兩個類是處在同一層次上的,而在聚合關係中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分。 

組合(Composition) 關係是關聯關係的一種,是比聚合關係強的關係。它要求普通的聚合關係中代表整體的對象負責代表部分對象的生命周期,組合關係是不能共享的。代表整體的對象需要負責保持部分對象和存活,在一些情況下將負責代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由後者負責此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發生組合關係,由後者排他地負責生命周期。部分和整體的生命周期一樣。

class Driver {   

    //使用成員變量形式實現關聯   

    Car mycar;   

    public void drive(){   

        mycar.run();   

    }   

    …   

    //使用方法參數形式實現關聯   

    public void drive(Car car){   

        car.run();   

    }   

}

聚合關係是是一種比較強的關聯關係,java中一般使用成員變量形式實現。對象之間存在着整體與部分的關係。例如上例中

class Driver {   

    //使用成員變量形式實現聚合關係   

    Car mycar;   

    public void drive(){   

        mycar.run();   

    }   

}

假如給上面代碼賦予如下語義:車是一輛私家車,是司機財產的一部分。則相同的代碼即表示聚合關係了。聚合關係一般使用setter方法給成員變量賦值。 

假如賦予如下語義:車是司機的必須有的財產,要想成為一個司機必須要先有輛車,車要是沒了,司機也不想活了。而且司機要是不幹司機了,這個車就砸了,別人誰也別想用。那就表示組合關係了。一般來說,為了表示組合關係,常常會使用構造方法來達到初始化的目的,例如上例中,加上一個以Car為參數的構造方法 

public Driver(Car car){   

    mycar = car;   

}

所以,關聯、聚合、組合只能配合語義,結合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關聯,聚合,還是組合關係,則是無法判斷的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/272189.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-17 00:08
下一篇 2024-12-17 13:55

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • 掌握magic-api item.import,為你的項目注入靈魂

    你是否曾經想要導入一個模塊,但卻不知道如何實現?又或者,你是否在使用magic-api時遇到了無法導入的問題?那麼,你來到了正確的地方。在本文中,我們將詳細闡述magic-api的…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論