關於可維護、可複用、可擴展、靈活性好的理解:
生活中:印刷術和活字印刷,當需要對某些內容修改時,印刷術只要有一丁點變化,就需要重頭再來;而活字印刷只需要進行部分修改即可。
可維護:只更改要更改的內容;
可複用:之前的內容並非用完就無用,後面仍可使用;
可擴展:若要新增內容,只需在原來內容的基礎上增加新內容即可;
靈活性:內容可以稍作修改既可以滿足要求。
封裝、繼承、多態把程序的耦合度降低,使用設計模式使得程序更加靈活,容易修改並易於複用。
UML類圖
在學習設計模式時,UML類圖是必不可少的工具,通過UML類圖可以查看所設計的程序是否足夠優秀。判斷所設計的代碼是否具有可維護性、可擴展性、可複用性、靈活性等。
(圖片來自大話數據結構)
-
類
類圖分爲三層,第一層顯示類的名稱,如果是
抽象類
,則用斜體
顯示;第二層是類的特性,通常是字段和屬性;第三層是類的操作,通常是方法或行爲;注意前面的符號,“+”:public,“-”:private,“#”:protected
。 -
接口
與類圖的區別主要是
頂端有<<interface>>
顯示;第一行是接口名稱,第二行是接口方法。接口還有棒棒糖表示法,如上圖所示,唐老鴨實現講人話這個接口,在圓圈旁邊是接口的名稱。 -
繼承(類與類)
空心三角形+實線
;空心三角形在被繼承端,即父類 -
實現(類與接口)
空心三角形+虛線
;空心三角形在被實現端 -
關聯
當一個類需要知道另一個類時,如企鵝需要知道氣候變化,需要了解氣候規律。用
實線箭頭表示,箭頭指向被瞭解方
-
聚合
比如:每隻大雁都屬於一個雁羣,而一個雁羣可以有多隻大雁;它們之間就滿足聚合關係。聚合表示一種弱的‘擁有’關係,體現的是
A對象可以包含B對象,但B對象不是A對象的一部分
。聚合用空心菱形+實現箭頭
表示,菱形在B對象上,箭頭指向A對象 -
合成/組合
比如:鳥和翅膀就是組合關係,是一種
強的‘擁有’關係
,體現嚴格的部分和整體的關係,兩者生命週期一樣。合成關係用實心菱形+實線箭頭
來表示,實心菱形在擁有端,箭頭指向被擁有端
,在合成關係的連線兩端還有數字,稱爲基數,表示這一類可以有幾個實例, -
依賴
如上圖的動物需要依賴氧氣、水等用
虛線箭頭
表示,箭頭指向被依賴端