球窩

2005 年 2 月 3 日

出現在 UML 2 中的新符號之一是插座符號,用於顯示類別所需的介面。其起源是 Microsoft 推廣的「棒棒糖」符號,用於顯示實作多個介面的類別。因此,我可以顯示 Array 類別實作多個介面,如下所示。

這是一個顯示此類事項的實用符號。使用實作箭號會導致更混亂的圖表。

類別不僅實作介面,你也可以認為它們需要介面。想像我撰寫一個類別,可以提供關於我的數位音樂播放清單的各種資訊,例如播放清單的總長度。為了取得個別音樂檔案的資訊,我需要從某處取得資料。由於我是一個相當時髦的人,我可以從 iTunes 取得資料,但由於我知道還有其他可能性(例如直接從 mp3 讀取),所以我使用介面,以便我可以輕鬆地替換其他實作。

所需的介面符號允許我使用簡潔的插座符號顯示此所需的介面。

由於球體和插座非常接近,因此它們應該配對似乎很自然。因此,我在撰寫 UML Distilled 時看到的 UML 規格讓它們可以這樣做。

儘管在這些 UML 規格中允許這樣做,但 Bran Selic 親切地告訴我,UML 委員會已決定這是一個錯誤,你不應該能夠以這種方式使用球體和插座符號。球體和插座符號仍然存在於 UML 中,但它只能用於複合結構圖中的連接器,而這是一個單獨的主題領域。

這會產生一個問題,即你應該如何顯示所需介面和提供的介面之間的連結。我們在 UML 1 中使用依賴關係來做到這一點。

Jim Rumbaugh 的 參考手冊 顯示了另一種方式。

對於像這樣的範例,我認為我比較喜歡 UML 1 樣式,因為傳達相同意義的符號較少。然而,當您想要顯示更複雜的內容時,例如實作單一必要介面的多個類別,Rumbaugh 樣式就大放異彩了。

儘管結合球體和插座符號在技術上無效,但我相當喜歡它作為顯示介面和實作如何連接的方式,因此再次傾向於打破嚴格的 UML 規則來使用它。在更複雜的情況下,我可能會在球體和插座之間使用相依符號,但當發生這種情況時,我比較喜歡為介面使用明確的類別方塊。