依賴關係
依賴關係是一種使用關係,對於特定事物的改變有可能會影響到使用該事物的其他事物,在需要表示一個事物使用另外一個事物時使用依賴關係。比如說人要探親需要交通工具,人和交通工具之間的關係就是依賴關係;工人用挖掘機進行工作,工人和挖掘機之間就是依賴關係。大多數情況下,依賴關係體現在某個類的方法當中使用另一個類的對象作爲參數。
依賴關係在面對對象語言當中有三種情況:
1、A類是B類中(某種方法的)局部變量
2、A類是B類方法當中的一個參數
3、A類向B類發送信息,從而影響B類發生變化
對應的Java代碼片段:
public class CourceTable {
public void addCource(Cource cource) {
// 依賴關係
cource.show();
System.out.println("增加課程");
}
public void reCource(Cource cource) {
// 依賴關係
cource.show();
System.out.println("刪除課程");
}
}
public class Cource {
public void show() {
System.out.println("課程爲…");
}
}
public class CourceTest {
public static void main(String[] args) {
CourceTable t = new CourceTable();
Cource c = new Cource();
t.addCource(c);
t.reCource(c);
}
}
上述課程表類中用課程的對象作爲參數,進行增加課程和刪除課程的功能。課程的變化同時會引起課程表的實時變更,即爲課程表依賴於課程。
關聯關係
關聯關係是類與類之間最常用的一種關係,它作爲一種結構化關係,代表了類的對象之間的一組連接。比如客戶與訂單、老師和學生,人體與大腦,這些關係並不是使用的時候纔有的聯繫,二十一種長期存在並且穩定的關係。
關聯關係也分爲雙向關聯、單項關聯和自關聯等等。
雙向關聯
我們這裏一般指都知道雙方的存在,都可以調用對方的公共屬性和方法,默認的情況下,關聯都是雙向的。比如供應商和顧客之間的聯繫,一家供貨商可以向多個顧客供貨,一個顧客也可以向多家供應商進貨。
對應的Java代碼片段:
// 顧客類
public class Customer {
// 供應商對象組作爲Customer的屬性成員
private Supplier[] supplier;
}
// 供應商類
public class Supplier {
// 顧客對象組作爲Supplier的屬性成員
public Customer[] customer;
}
單向關聯
對應的Java代碼片段:
// 顧客類
public class Customer {
private Address address;
}
// 地址類
public class Address {
}
自身關聯
在系統中可能存在一些類的屬性爲對象類型爲該類本身,這種特殊的關聯關係稱爲自關聯。
// 顧客類
public class Customer {
private Customer customer;
}