深入理解JAVA中的聚集和組合的區(qū)別與聯(lián)系
選自《JAVA語言程序設(shè)計(jì)-基礎(chǔ)篇(原書第8版)》
定義:一個對象可以包含另一個對象。這兩個對象之間的關(guān)系稱為組合(composition)。
組合實(shí)際上是聚集關(guān)系的一種特殊形式。聚集模擬了具有(has-a)關(guān)系,表示兩個對象之間的歸屬關(guān)系。歸屬關(guān)系中的所有者對象稱為聚集對象(aggregation object),而它的類稱為聚集類(aggregating class)。歸屬關(guān)系中的從屬對象稱為被聚集類(aggregated object),而它的類被稱為被聚集類(aggregated class)。
一個對象可以被幾個其他聚集對象所擁有。如果一個對象只歸屬于一個聚集對象,那么它和聚集對象之間的關(guān)系就稱為組合(composition)。例如:“一個學(xué)生有一個名字”就是組合關(guān)系,“一個學(xué)生有一個地址”就是聚集關(guān)系,因?yàn)橐粋€地址可以被幾個學(xué)生所共享。
UML中,實(shí)心菱形表示組合關(guān)系,空心菱形表示聚集關(guān)系。如圖:
聚集關(guān)系通常被表示為聚集類中的一個數(shù)據(jù)域,如圖:
聚集還可以存在于同一類的多個對象之間。例如:一個人可能有一個管理者或者多個管理者。一個管理者可用變量表示,多個則可使用數(shù)組,如圖:
到這里,基本上聚集和組合的關(guān)系就不言自明了。
以上這篇深入理解JAVA中的聚集和組合的區(qū)別與聯(lián)系就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java工廠模式優(yōu)雅地創(chuàng)建對象以及提高代碼復(fù)用率和靈活性
Java工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,通過定義一個工廠類來封裝對象的創(chuàng)建過程,將對象的創(chuàng)建和使用分離,提高代碼的可維護(hù)性和可擴(kuò)展性,同時可以實(shí)現(xiàn)更好的代碼復(fù)用和靈活性2023-05-05Spring?Boot?RestController接口輸出到終端的操作代碼
這篇文章主要介紹了Spring?Boot?RestController接口如何輸出到終端,使用?HttpServletResponse?類,可以在使用curl執(zhí)行?Spring?Boot?REST接口的同時,在控制臺輸出一些信息,給運(yùn)維人員知道當(dāng)前命令執(zhí)行的狀態(tài),感興趣的朋友跟隨小編一起看看吧2023-09-09Java SiteMesh新手學(xué)習(xí)教程代碼案例
這篇文章主要介紹了Java SiteMesh新手學(xué)習(xí)教程代碼案例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10Spring?Boot教程之提高開發(fā)效率必備工具lombok
這篇文章主要介紹了Spring?Boot教程之提高開發(fā)效率必備工具lombok的相關(guān)資料,需要的朋友可以參考下2022-08-08