最近在看HeadFirst,接下來的1段時間會陸續更新有關HeadFirst設計模式相干的文章。記得很久之前在學習大話設計模式的時候,只是走馬觀花的大致走過1遍,至于里面很多東西都掌握的不是很好。恰巧又接觸了HeadFirst,想著還是把設計模式好好的整理1下,至因而大話設計還是HeadFirst,個人看來是無關緊要的。本著學習的目的,而且都是設計模式,只不過1個是C#,1個是Java。
本來第1篇文章想著從視察者模式開始講起,但是想著想著,還是把UML的類圖的關系捋1下吧,不然的話類圖都看不懂。翻翻我之前寫的博客,關于UML的總結著實寫了好幾遍了,但是最近再總結時竟然又發現了很多之前總結不到的地方。所以,又驗證了“學習是1個不斷深入、按部就班的進程”。不要說你對1個知識點掌握的不好,也不要找這樣那樣的理由。歸根結柢,是我們沒有找到那個知識點的精華所在。
今天總結是建立在之前總結的基礎之上的,所以難免笼統,盡請體諒!
繼承:
表示:實線+空心3角箭頭
含義:指的是1個類(子類或子接口)繼承另外的1個類(父類或父接口)的功能
剖析:繼承是類與類或接口與接口之間最多見的關系,在Java中繼承用關鍵字extends標識
注意:注意箭頭的方向,是父類指向子類;
繼承表示的是類與類或接口與接口之間的關系。
泛化:
同繼承
泛化也是1種繼承關系,表1般與特殊的關系。在我看來,泛化于繼承的區分只是相對誰而言。比如上面那張圖,可以說是子類繼承父類,老虎和小狗繼承動物這個父類;而子類是父類的泛化,也就是老虎和狗狗是動物這個父類的泛化。好了,泛化不做過量說明。有不同觀點的歡迎在下面留言斧正!謝謝!
實現:
表示:虛線+空心3角箭頭
含義:指的是1個類實現1個接口(可以是多個接口)的功能
剖析:實現是類與接口之間最多見的關系,在Java中實現用Implements標識
注意:注意箭頭的方向,是類指向接口
注意實現關系的適應場合,是描寫類與接口之間用實現關系
依賴:
表示:虛線+箭頭
含義:簡單的理解就是1個類A使用到了另外一個類B,而且類B的變化會影響到類A
剖析:在大多數情況下,依賴關系體現在某個類的方法使用另外一個類的對象作為參數
舉個例子:好比動物的存活要依賴于水和氧氣,那末水、氧氣與動物之間就是依賴關系
注意:注意箭頭的方向,是依賴的1方指向被依賴的1方
依賴關系描寫的是類與類之間的關系
關聯關系――聚合:
含義:是關聯關系的1種特例,表示整體與部份之間的關系,是1種弱的具有關系;
并且整體與部份不在1個生命周期內,是可分離的
剖析:具體的體現是A對象可以包括B對象,但是B對象不是A對象的1部份;
舉個例子,好比大雁和雁群;電腦與CPU;公司與員工;
注意:注意方向,空心菱形指向整體,箭頭1端指向的是部份
關聯關系――組合:
表示:實心菱形+實線箭頭
含義:是關聯關系的1種特例,表示整體與部份之間的關系,是1種強的具有關系;
并且整體與部份在1個生命周期內,體現了嚴格的整體與部份關系,是不可分離的
剖析:具體的體現是A對象可以包括B對象,但是B對象是A對象的1部份;
舉個例子,好比鳥和翅膀;人和大腦
注意:注意方向,實心菱形指向整體,箭頭1端指向的是部份
今天的總結就到這里,也是把之前的盲區重新糾正1下,之前的總結有很多總結不到的地方,所以本著學習的目的再把它們整理1下。接下來我們會開始視察者模式,敬請期待吧!