古詩詞大全網 - 成語故事 - 類(對象)之間的四種關系

類(對象)之間的四種關系

類(對象)之間的四種關系

1.依賴關系(Dependency)

所謂依賴就是某個對象的功能依賴於另外的某個對象,而被依賴的對象只是作為壹種工具在使用,而並不持有對它的引用。

舉例:

壹個人自從出生就需要不停的呼吸,而人的呼吸功能之所以能維持生命就在於吸進來的氣體發揮了作用,所以說空氣只不過是人類的壹個工具,而並不是人類對它的引用。

2.關聯關系(Association)

某個對象會長期的持有另壹個對象的引用,而二者的關聯往往也是相互的。

關聯的兩個對象彼此間沒有任何強制性的約束,只要二者同意,可以隨時解除關系或是進行關聯,它們在生命周期問題上沒有任何強制性的約束,被關聯的對象還可以再被別的對象關聯,所以關聯是可以***享的。

舉例:

人從生至死都在不斷的交朋友,然而沒有理由認為朋友的生死與我的生死有著聯系,故他們的生命周期沒有關聯,我的朋友又可以是別人的朋友,所以說朋友是可以***享的。

3.聚合關系(Aggregation)

聚合是強版的關聯

它暗含著壹種所屬關系以及生命周期關系

被聚合的對象還可以再被別的對象關聯,所以被聚合對象是可以***享的。雖然是***享的,聚合代表的是壹種更親密的關系。

舉例:

我的家和我之間具有著壹種強烈的所屬關系。我的家可以分享的,但是這裏的分享又可以分為兩種:

其壹:聚合間的分享 ?正如妳和妳老婆都對這個家有著同樣強烈的關聯。

其二:聚合與關聯的分享 妳朋友來家裏吃個便飯,估計妳不會給妳朋友配壹把妳家的鑰匙。

4.組合關系(Compostion)

組合是關系中的最強版,它直接要求包含對象對被包含對象的擁有以及包含對象與被包含對象生命周期的關系。

被包含的對象還可以再被別的對象關聯

所以被包含對象是可以***享的

然而絕不存在兩個包含對象對同壹個被包含對象的***享

舉例:

組合關系就是整體與部分的關系,部分屬於整體

整體不存在,部分壹定不存在,然而部分不存在整體是可以存在的。

說的更明確壹些就是部分必須創生與整體創生之後,而銷毀整體銷毀之前。

/**

* 所謂依賴關系,就是指其中壹個對象依賴於另壹個對象的某種功能或者屬性,就是說,依賴者把被依賴者當作工具來使用,

*被依賴者並不屬於依賴者。

public class Dependency {

public static void main(String[] args) {

Human person = new Human();

while(true){

person,breath();

}

}

? }

/**

* 屬於依賴者

* @author Administrator

*

*/

class Human{

public void breath(){

Air freshAir = new Air();

freshAir.provideOxygen();

System.out.println("吸了壹口");

System.out.println("呼了壹口");

}

}

/**

* 屬於被依賴者

* @author Administrator

*

*/

class Air{

public void provideOxygen(){

System.out.println("釋放了壹波氧氣");

}

}

import java.util.ArrayList;

二·關聯關系

/**

* 所謂關聯,某個對象長期持有另壹個對象的引用,

而且這兩者之前的關聯是相互的,

關聯的兩個對象彼此之間沒有任何的強制性約束,

只要兩者同意,可以隨時解除關聯關系,

而且它們在生命周期上沒有任何約定,

被關聯的對象是***享,它還可以被其他對象關聯。

* @author Administrator

*

*/

public class Association {

public static void main(String[] args) {

Human$ person = new Human$();

School zhengZhouHighSchool = new School();

while(true){

person.makeFriend(zhengZhouHighSchool.getStudent());

}

}

}

class Human${

ArrayList friends = new ArrayList();

public void makeFriend(Human$ hunman$){

friends.add(hunman$);

}

}

class School{

public Human$ getStudent(){

return new Human$();

}

}

三 聚合關系

* @author Administrator

*家庭和我之間屬於壹種比較親密的關系,而且我的家庭是可以分享,我回家以及我家人回家,這種分享具有跟強的親密度

*朋友去我家,親密度要小於我和我家人。

*/

public class Aggregation {

public static void main(String[] args) {

Human

person=newHuman

();

while(true){

//吃飯

//上學

//放學

person.goHome();

}

}

}

class Human$${

Home myHome = new Home();

public void goHome(){

myHome.openDoor();

}

}

class Home{

public void openDoor(){

}

}

import java.util.ArrayList;

四? 組合關系

* @author Administrator

* 組合關系就是整體與部分的關系,部分屬於整體,整體不存在,則部分壹定不存在

* 然後部分不存在整體依然可以生存

* 部分存在於整體創建之後,部分銷毀於整體銷毀之前。

*/

public class Compostion {

public static void main(String[] args) {

Human

$person=newHuman

$();

while(true){

person.heart.beat();

}

}

}

class Human$$${

Heart heart = new Heart();

}

class Heart{

public void beat(){

}

}