一盔憨、什么是設(shè)計(jì)模式
“每一個(gè)模式描述了一個(gè)在我們周?chē)粩嘀貜?fù)發(fā)生的問(wèn)題滞伟,以及該問(wèn)題的解決方案的核心媚值。這樣宴树,你就能一次又一次地使用該方案而不必做重復(fù)勞動(dòng)”
——Christopher Alexander
盡管Alexander所指的是城市和建筑模式红省,但他的思想也同樣適用于面向?qū)ο笤O(shè)計(jì)模式额各。
受Alexander的啟發(fā),Erich Gamma吧恃、Richard Helm虾啦、Ralph Johnson、Jshn Vlissides四人(人稱Gang Of Four痕寓,GOF)總結(jié)了23種常見(jiàn)的軟件開(kāi)發(fā)設(shè)計(jì)模式
這23種設(shè)計(jì)模式并不描述新的或未經(jīng)證實(shí)的設(shè)計(jì)傲醉,而是經(jīng)過(guò)驗(yàn)證,用于解決在特定環(huán)境下呻率、特定問(wèn)題的解決方案硬毕。
1.1 設(shè)計(jì)模式四要素
- 模式名稱:助記名,便于記憶和交流
- 問(wèn)題:交代特定的問(wèn)題場(chǎng)景
- 解決方案:確定了所包含的類和實(shí)例礼仗,它們的角色吐咳、協(xié)作方式以及職責(zé)分配
- 效果:使用此解決方案之后所帶來(lái)的最終效果
1.2 為什么需要學(xué)習(xí)設(shè)計(jì)模式
- 1.設(shè)計(jì)模式已成為軟件開(kāi)發(fā)行業(yè)的“標(biāo)準(zhǔn)詞匯”
- 2.個(gè)人技術(shù)提高的必備知識(shí)
- 3.無(wú)須重復(fù)造輪子
二、設(shè)計(jì)模式的分類
GOF將設(shè)計(jì)模式分為23種設(shè)計(jì)模式元践,其中分為三大類
2.1 創(chuàng)建型模式
抽象了對(duì)象實(shí)例化的過(guò)程韭脊,用來(lái)幫助創(chuàng)建對(duì)象的實(shí)例
2.2 結(jié)構(gòu)型模式
描述如何組合類和對(duì)象以獲取更大的結(jié)構(gòu)
2.3 行為型模式
描述算法和對(duì)象間的職責(zé)分配
2.4 設(shè)計(jì)模式總覽
上面標(biāo)紅色五角星的為必須理解透徹的設(shè)計(jì)模式
三、UML類圖
為了更好的學(xué)習(xí)和理解設(shè)計(jì)模式单旁,學(xué)習(xí)設(shè)計(jì)模式之前沪羔,需要掌握UML類圖
3.1 UML類圖
UML,全稱:統(tǒng)一建模語(yǔ)言(Unified Modeling Language)它是讓系統(tǒng)可視化的表現(xiàn)手段慎恒。
UML類圖主要用來(lái)表示類任内、接口、實(shí)例之間相互的靜態(tài)關(guān)系融柬。本系列使用Java語(yǔ)言作為代碼演示死嗦,約定Java的字段屬性與UML的屬性(Attribute)對(duì)等,Java的方法與UML的操作(Operation)對(duì)等粒氧。
3.2 UML類圖幾種關(guān)系
1.依賴關(guān)系(dependency)
它描述一個(gè)對(duì)象在運(yùn)行期會(huì)使用到另一個(gè)對(duì)象的關(guān)系越除。依賴是一種臨時(shí)性的關(guān)系,通常都是在運(yùn)行期間產(chǎn)生外盯,并隨著運(yùn)行場(chǎng)景的不同摘盆,依賴關(guān)系也可能發(fā)生變化
比如人和船這兩個(gè)對(duì)象,如果場(chǎng)景是:開(kāi)動(dòng)輪船饱苟,那么船依賴于人孩擂。如果場(chǎng)景是:渡海,那么人依賴于船
2.泛化(generalization)
說(shuō)明兩個(gè)對(duì)象之間的繼承關(guān)系箱熬。被繼承的類稱為父類类垦,繼承的類稱為子類
3.實(shí)現(xiàn)(realization)
描述在一個(gè)類中描述,具體實(shí)現(xiàn)由另一個(gè)類在實(shí)現(xiàn)細(xì)節(jié)
4.關(guān)聯(lián)(association)
描述了一個(gè)事物對(duì)象與另一個(gè)事物對(duì)象相關(guān)聯(lián)城须。其中關(guān)聯(lián)又具體分為:聚合關(guān)系蚤认、組合關(guān)系。
聚合關(guān)系:表達(dá)整體由部分構(gòu)成糕伐。例如:一個(gè)班級(jí)由多個(gè)學(xué)生構(gòu)成砰琢。
組合關(guān)系:表達(dá)整體擁有部,是一種強(qiáng)依賴的聚合關(guān)系良瞧。例如:人體是由頭部和眼睛組成.