如果你使用UML進行設計,使用最多的應該是類設計;如果不是的話,要么你不怎么會利用UML進行設計,要么你不怎么會設計面向?qū)ο笙到y(tǒng)。我所見過的,基于過程的設計,常常使用時序圖來設計流程。
類圖是UML圖中最重要的,它一般在我的設計中占比例最大。我設計類,主要注重兩方面:
1. 寫出每個類最重要的成員函數(shù)名,特別是public型的成員函數(shù)名。
從類名和這些重要的成員函數(shù)名,我一眼就看出這個類的職責和作用。
2. 表達出各個類之間的依賴關系:繼承、組合、聚合。
繼承關系是一定要清楚的,這個一般也很容易發(fā)現(xiàn)。至于組合和聚合,我們可以不必細分清楚,主要是清晰的確定他們之間的依賴關系,不要產(chǎn)生循環(huán)依賴。
類設計應該詳細到什么程度,我從來不幻想能自動生成代碼。
一種現(xiàn)象就是喜歡盡量詳細設計,然后才進行編碼實現(xiàn),之后再也不管那設計了。
另一種現(xiàn)象是嘴里喊著“源代碼就是設計”,從來也不進行任何編碼前的設計工作,而自己代碼其實寫的很亂,很不可讀,很難維護和擴展。
我堅持的原則是:
(1)重要的、不大變化的概念,要使用UML進行設計,以理清我們的思路,看清依賴關系。
(2)變化大的、細節(jié)的東西,可以采用“源代碼就是設計”的原則。
(3)開發(fā)與設計同步,同步修改,在設計圖上思考我們的開發(fā),可以說是一種敏捷設計吧。
最近設計網(wǎng)絡行為大流量設計,其中設計TCP流量分流模塊的類圖部分,如下: