概述
設計模式中常常使用UML來表示類與類,類與接口之間的關係,UML類圖是設計模式入門必備的技能,感覺各種關係比較多,這裏做一下總結。
類與接口的表示
類與接口通常是一個矩形框表示,一般分爲3層,第一層顯示類的名稱,如果是抽象類則類名用斜體表示。第二層代表類的特性,通常是字段和屬性,第三層是類的操作,通常表現爲方法或者行爲,其中+
表示public,-
表示private,#
表示protect
常用關係
繼承
繼承關係用空心三角形+實線來表示,在java中體現爲extends
關鍵字
實現接口
實現接口用空閒三角形+虛線,在java中體現爲implements
關鍵字
聚合關係
聚合關係表現爲一種弱擁有
關係,體現爲A對象可以包含B對象,但是B對象不是A對象的一部分。
實現用空心菱形+實線;
在java中可以體現爲,一個類的數組或者通過setter或者getter方式注入到整體對象中
//數組對象形式
public class wideGooseAggregate{
private WideGoose[] arrayWideGoose;//雁羣類中有大雁的數組對象
}
//注入方式存在
public class Car {
private Engine engine;
//構造注入
public Car(Engine engine) {
this.engine = engine;
}
//設值注入
public void setEngine(Engine engine) {
this.engine = engine;
}
……
}
public class Engine {
……
}
- 組合關係
組合關係也表示整體和部分之間的關係,體現出的是一種強擁有
關係,即整體可以控制成員對象的生命週期,整體對象一旦不存在成員對象也將不存在。通常體現爲成員對象在整體類構造方法中被new出來。
用實心菱形+實線表示。
public class Bird{
private Wing wing;
public Bird(){
wing = new Wing();
}
}
- 依賴關係
依賴關係,顧名思義,產生了依賴就會出現這個類的改變會帶動另一個類的變化,一般體現在某個類的方法使用另一個類的對象作爲參數。
用虛線+箭頭表示。
abstract class Animal{
public Metabolism(Oxygen oxygen,Water water){
……
}
}
- 關聯關係
一種結構化關係,用於表示一類對象和另一類對象有聯繫。在Java中通常表現爲一個類的對象作爲一個類的成員變量,即表現在代碼層面,爲被關聯類B以類屬性的形式出現在關聯類A中,也可能是關聯類A引用了一個類型爲被關聯類B的全局變量。
用實線表示
public class Penguin{
private Climate climate;
……
}
參考:
《大話設計模式》
http://blog.csdn.net/lovelion/article/details/7842898