1. 程式人生 > >【HeadFirst設計模式——開篇】

【HeadFirst設計模式——開篇】

多說 謝謝 ace gb2 end http wid content -a

近期在看HeadFirst,接下來的一段時間會陸續更新有關HeadFirst設計模式相關的文章。記得非常久之前在學習大話設計模式的時候,僅僅是走馬觀花的大致走過一遍。至於裏面非常多東西都掌握的不是非常好。恰巧又接觸了HeadFirst,想著還是把設計模式好好的整理一下,至於是大話設計還是HeadFirst,個人看來是無關緊要的。

本著學習的目的,並且都是設計模式,僅僅只是一個是C#,一個是Java。


本來第一篇文章想著從觀察者模式開始講起,可是想著想著。還是把UML的類圖的關系捋一下吧。不然的話類圖都看不懂。翻翻我曾經寫的博客,關於UML的總結著實寫了好幾遍了,可是近期再總結時竟然又發現了非常多之前總結不到的地方。

所以,又驗證了“學習是一個不斷深入、循序漸進的過程”。不要說你對一個知識點掌握的不好。也不要找這樣那樣的理由。歸根結底,是我們沒有找到那個知識點的精髓所在。


今天總結是建立在之前總結的基礎之上的,所以難免笼統。盡請諒解!


繼承

表示:實線+空心三角箭頭

含義:指的是一個類(子類或子接口)繼承另外的一個類(父類或父接口)的功能

剖析:繼承是類與類或者接口與接口之間最常見的關系。在Java中繼承用keywordextends標識

註意:註意箭頭的方向,是父類指向子類。

繼承表示的是類與類或接口與接口之間的關系。

技術分享


泛化

同繼承

泛化也是一種繼承關系,表一般與特殊的關系。

在我看來,泛化於繼承的差別僅僅是相對誰而言。比方上面那張圖,能夠說是子類繼承父類。老虎和小狗繼承動物這個父類。而子類是父類的泛化,也就是老虎和狗狗是動物這個父類的泛化。好了。泛化不做過多說明。有不同觀點的歡迎在以下留言斧正!謝謝。


實現

表示:虛線+空心三角箭頭

含義:指的是一個類實現一個接口(能夠是多個接口)的功能

剖析:實現是類與接口之間最常見的關系。在Java中實現用Implements標識

註意:註意箭頭的方向,是類指向接口

註意實現關系的適應場合。是描寫敘述類與接口之間用實現關系

技術分享


依賴:

表示:虛線+箭頭

含義:簡單的理解就是一個類A使用到了還有一個類B,並且類B的變化會影響到類A

剖析:在大多數情況下,依賴關系體如今某個類的方法使用還有一個類的對象作為參數

舉個樣例:好比動物的存活要依賴於水和氧氣。那麽水、氧氣與動物之間就是依賴關系

註意:註意箭頭的方向。是依賴的一方指向被依賴的一方

依賴關系描寫敘述的是類與類之間的關系

技術分享


關聯關系——聚合:

表示:空心菱形+實線箭頭

含義:是關聯關系的一種特例,表示總體與部分之間的關系。是一種弱的擁有關系;

而且總體與部分不在一個生命周期內,是可分離的

剖析:詳細的體現是A對象能夠包括B對象。可是B對象不是A對象的一部分;

舉個樣例,好比大雁和雁群;電腦與CPU。公司與員工。

註意:註意方向,空心菱形指向總體,箭頭一端指向的是部分

技術分享


關聯關系——組合
表示:實心菱形+實線箭頭

含義:是關聯關系的一種特例。表示總體與部分之間的關系。是一種強的擁有關系。

而且總體與部分在一個生命周期內,體現了嚴格的總體與部分關系,是不可分離的

剖析:詳細的體現是A對象能夠包括B對象,可是B對象是A對象的一部分;

舉個樣例,好比鳥和翅膀;人和大腦

註意:註意方向,實心菱形指向總體,箭頭一端指向的是部分

技術分享


今天的總結就到這裏。也是把之前的盲區又一次糾正一下,之前的總結有非常多總結不到的地方。所以本著學習的目的再把它們整理一下。接下來我們會開始觀察者模式。敬請期待吧!


【HeadFirst設計模式——開篇】