本節書摘來自異步社群《設計模式解析(第2版•修訂版)》一書中的第2章,第2.5節互動圖,作者【美】alan shalloway(艾倫•沙洛維) , james r.trott(詹姆斯•r.特羅特),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
2.5 互動圖
設計模式解析(第2版•修訂版)
互動圖
類圖可以表示類之間的靜态關系,換句話說,類圖不能表示任何活動。雖然這非常有用,但有時候我需要表示這些類執行個體化的對象是如何實際地一起工作的。
表示對象間如何互動的uml圖稱為互動圖(interaction diagram)。最常用的互動圖是順序圖,如圖2-8所示。

如何閱讀順序圖
順序圖應該從頂到底地閱讀,如下所述。
最上面的每個矩形都代表一個特定的對象。雖然許多矩形中有類名,但請注意在類名前有一個冒号。一些矩形還有其他名字——例如shape1:square。
垂直線代表對象的生命線。糟糕的是,大多數uml繪圖程式不支援這一點,隻能繪制從頂到底的線,是以并不清楚對象實際上什麼時候開始存在。
我用這些垂直線之間的水準線表示對象互相發送消息1。
有時候傳回值和/或對象會明确表示出來,而有時候隻是表示它們要傳回。
例如,在圖2-8中,
在最上面可以看見main向shapedb對象(這個對象還沒有名字)發送了一個“擷取形狀集合”的消息。
在收到“擷取形狀集合”的請求之後,shapedb對象将:
執行個體化一個collection對象;
執行個體化一個square對象;
在集合中添加square對象;
執行個體化一個circle對象;
在集合中添加circle對象;
将集合傳回給調用例程(main)。
其餘操作也可以通過這種從頂到底的方式讀圖來了解,這種圖稱為順序圖(sequence diagram),因為它描述了操作的順序。
“對象:類”記号
有些uml圖中,需要用派生對象的類來表示該對象。可以通過用冒号連接配接二者來實作這一點。在圖2-8中,我用shape1:square表示從square類執行個體化的shape1對象。
1當對象互相“交談”時,我們稱之為“發送消息”。你需要給一個對象發送請求,讓它進行某種操作,而不是告訴其他對象做什麼,其他對象會負責搞清楚如何去做。轉移責任是面向對象程式設計基本原則之一。這與過程式程式設計完全不同,在後者情況下,你必須控制下一步做什麼,是以可能“調用另一個對象的方法”或者“調用操作”。
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。