設計模式——類圖以及類與類之間的關係
阿新 • • 發佈:2022-05-04
設計模式在程式設計上有著很重要的作用,使用設計模式可以使得程式碼更容易被理解,使得程式碼更規範,真正實現工程化。
一、用UML表示一個類
類圖一般是三行的結構:
- 類名稱
- 屬性:格式(可見性 名稱:型別[=預設值])
- 方法:格式(可見性 名稱(引數列表)[返回型別])
注:在Visio中的畫的類圖中使用的是C#的資料型別,與Java的略有差別。
二、類與類之間的關係
類與類之間主要有6種關係,包括依賴,關聯,聚合,組合,繼承,實現。他們的耦合度是一次增強的。
1、依賴(Dependency)
依賴主要體現了一種使用關係,兩個相對獨立的物件,當一個物件負責構造另一個物件的例項,或者依賴另一個物件的服務時,主要體現為依賴關係。
依賴關係主要有3種表現形式:(以類A中使用了類B為例)
- 類B是作為類A的方法引數
- 類B是類A的方法中的區域性變數
- 在類A中呼叫類B的靜態方法
在依賴中使用的是“虛線+箭頭”。
public class Student {
public void read(Book book){
System.out.println("讀的書是:" + book.getName());
}
public void eat(Food food){
System.out.println("吃的是:" + food.getName());
}
}
2、關聯(Association)
關聯主要體現的是一種對應關係,兩個相對獨立的物件,當一個物件的例項與另一個物件的例項存在固定的對應關係時,這兩個物件之間為關聯關係。通常是將一個類的物件作為另一個類的成員變數。
關聯關係的分類:
- 單向關聯
- 雙向關聯
(單向關聯)
(雙向關聯)
public class Student{
private String id;
private ClassName className;
public Student(String id){
this.id = id;
this.className = new ClassName();
}
}
3、聚合(Aggregation)
聚合是關聯關係的一種,表現了一種弱的“擁有”關係,關聯關係的物件之間是相互獨立的,但是聚合關係的物件之間存在著一種包容關係,體現的是A物件可以包容B物件,但是B物件不是A物件的一部分。他們之間是“整體-個體”的關係。
成員物件通常作為構造方法、Setter方法或業務方法的引數注入到整體物件中。
public class People{
private Student student;
private Worker worker;
private Farmer farmer;
public People(Student student, Worker worker, Farmer farmer){
this.student = student;
this.worker = worker;
this.farmer = farmer;
}
}
4、組合(Composition)
組合是一種強的“擁有”關係,組合中的類之間是“整體-部分”的關係,“整體”負責“部分”的生命週期,“部分”和“整體”的生命週期是一樣的,“部分”單獨存在是沒有任何意義的。通常在整體類的構造方法中直接例項化成員類。
public class Bird{
private Wing wing;
public People(){
wing = new Wing();
}
5、繼承(Generalization)
繼承表示的是類與類之間或者介面與介面之間的父子關係,在java中使用的是extends關鍵字。
public class Bird extends Animal{
}
6、實現(Implementation)
實現表示的是一個類實現一個或者多個介面,在java中使用的是implements關鍵字。
public class Bird implements Animal{
}
參考文獻
- 深入淺出UML類圖(http://www.uml.org.cn/oobject/201211231.asp)
- 設計模式中類的關係(http://blog.csdn.net/zhengzhb/article/details/7187278)