UML之包圖(Package Diagram)

軟件的架構設計,思路遵循由大及小。相較於Class Diagram,Package Diagram從更宏觀的角度來展示軟件的架構設計,主要體現在代碼組織方面。Package Diagram對一些大型的項目特別有用。順便說一句,良好的代碼組織,對軟件的可維護性至關重要,請認真的規劃你的包結構。下文將簡單介紹Package Diagram,主要分兩塊,什麼是Package,以及Package之間的關係。

什麼是Package

用最簡單的方式來說,Package可以理解爲文件夾(folder)。代碼的組織從大到小,分爲三個層次:文件夾層,文件層,以及文件內部的塊(Block)層(函數塊之類的)。Package體現的就是文件夾層。Java裏面可能是一串文件夾,比如java.lang、java.util等,也叫Package;C++裏面,Package對應的是namespace,雖然不能完全等同於文件夾,不過也可以往這邊靠;其它的如Node.js,Python等大都體現在文件夾層。

Package在UML裏面用一個Tab框表示,Tab裏面寫上Package的名字,框裏面可選地填充一些其它子元素,如類,子Package等。Package的名字可以寫全稱,也可以簡寫,風格可可參考項目所用語言的慣例。下面是一個簡單的Package示例:


上圖爲某java項目的一個工具Package,裏面有四個工具類。類比較多的時候,爲簡單明晰起見,也可以不填寫子元素。

Package之間的關係

如果只有一個Package,那也就失去了Package的作用,沒有畫Package Diagram的意義。Package之間的關係非常的簡單,兩個字,依賴,UML中依賴用帶箭頭的虛線表示。我個人還是非常不建議依賴關係出現Cycle的。依賴關係最常見的一個例子就是分層架構,把代碼分佈到多個層次中,某層可以依賴於下層以及同層,但是不能依賴於上層。其它的組織方式還包括按照模塊劃分,按照功能劃分等。下圖是一個Java項目的簡單三層架構Package Diagram:


示例中三個主要的Package:data用於訪問數據庫,也叫dao,Mybatis項目裏面分爲entity和mapper兩個子Package,service是業務邏輯的組件,web用於接受http請求。util爲通用組件。

小結

Package Diagram從宏觀角度展示了項目的組織架構,在大型項目中,是重要的一種UML圖。可以先Package Diagram,再Class Diagram的方式來展示項目的架構。

發佈了76 篇原創文章 · 獲贊 535 · 訪問量 95萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章