設(shè)計(jì)模式在程序設(shè)計(jì)上有著很重要的作用,使用設(shè)計(jì)模式可以使得代碼更容易被理解,使得代碼更規(guī)范,真正實(shí)現(xiàn)工程化。
一、用UML表示一個(gè)類

類圖一般是三行的結(jié)構(gòu):
- 類名稱
- 屬性:格式(可見(jiàn)性 名稱:類型[=缺省值])
- 方法:格式(可見(jiàn)性 名稱(參數(shù)列表)[返回類型])
注:在Visio中的畫(huà)的類圖中使用的是C#的數(shù)據(jù)類型,與Java的略有差別。
二、類與類之間的關(guān)系
類與類之間主要有6種關(guān)系,包括依賴,關(guān)聯(lián),聚合,組合,繼承,實(shí)現(xiàn)。他們的耦合度是一次增強(qiáng)的。
1、依賴(Dependency)
依賴主要體現(xiàn)了一種使用關(guān)系,兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象負(fù)責(zé)構(gòu)造另一個(gè)對(duì)象的實(shí)例,或者依賴另一個(gè)對(duì)象的服務(wù)時(shí),主要體現(xiàn)為依賴關(guān)系。
依賴關(guān)系主要有3種表現(xiàn)形式:(以類A中使用了類B為例)
- 類B是作為類A的方法參數(shù)
- 類B是類A的方法中的局部變量
- 在類A中調(diào)用類B的靜態(tài)方法
在依賴中使用的是“虛線+箭頭”。
public void read(Book book){ System.out.println("讀的書(shū)是:" + book.getName()); public void eat(Food food){ System.out.println("吃的是:" + food.getName());
2、關(guān)聯(lián)(Association)
關(guān)聯(lián)主要體現(xiàn)的是一種對(duì)應(yīng)關(guān)系,兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象的實(shí)例與另一個(gè)對(duì)象的實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)對(duì)象之間為關(guān)聯(lián)關(guān)系。通常是將一個(gè)類的對(duì)象作為另一個(gè)類的成員變量。
關(guān)聯(lián)關(guān)系的分類:
- 單向關(guān)聯(lián)
- 雙向關(guān)聯(lián)
(單向關(guān)聯(lián))

(雙向關(guān)聯(lián))
private ClassName className; public Student(String id){ this.className = new ClassName();
3、聚合(Aggregation)
聚合是關(guān)聯(lián)關(guān)系的一種,表現(xiàn)了一種弱的“擁有”關(guān)系,關(guān)聯(lián)關(guān)系的對(duì)象之間是相互獨(dú)立的,但是聚合關(guān)系的對(duì)象之間存在著一種包容關(guān)系,體現(xiàn)的是A對(duì)象可以包容B對(duì)象,但是B對(duì)象不是A對(duì)象的一部分。他們之間是“整體-個(gè)體”的關(guān)系。

成員對(duì)象通常作為構(gòu)造方法、Setter方法或業(yè)務(wù)方法的參數(shù)注入到整體對(duì)象中。
public People(Student student, Worker worker, Farmer farmer){
4、組合(Composition)
組合是一種強(qiáng)的“擁有”關(guān)系,組合中的類之間是“整體-部分”的關(guān)系,“整體”負(fù)責(zé)“部分”的生命周期,“部分”和“整體”的生命周期是一樣的,“部分”單獨(dú)存在是沒(méi)有任何意義的。通常在整體類的構(gòu)造方法中直接實(shí)例化成員類。

5、繼承(Generalization)
繼承表示的是類與類之間或者接口與接口之間的父子關(guān)系,在java中使用的是extends關(guān)鍵字。

public class Bird extends Animal{
6、實(shí)現(xiàn)(Implementation)
實(shí)現(xiàn)表示的是一個(gè)類實(shí)現(xiàn)一個(gè)或者多個(gè)接口,在java中使用的是implements關(guān)鍵字。

public class Bird implements Animal{
參考文獻(xiàn)
- 深入淺出UML類圖(http://www./oobject/201211231.asp)
- 設(shè)計(jì)模式中類的關(guān)系(http://blog.csdn.net/zhengzhb/article/details/7187278)
|