前言 設(shè)計(jì)模式其實(shí)就是前人們的在開發(fā)過程中總結(jié)出來的對特定問題的解決方案。設(shè)計(jì)模式和編程語言沒有必然的聯(lián)系,它的目的是解決代碼可復(fù)用性、可維護(hù)性、可擴(kuò)展性、可讀性、穩(wěn)健性以及安全性。 GOF-23種設(shè)計(jì)模式1994年,Erich Gamma、Richard Helm、Ralph Johnson與John Vlissides撰寫了Design Patterns:Elements of Reusable Object-Oriented software(設(shè)計(jì)模式可復(fù)用面向?qū)ο筌浖幕A(chǔ))這本書,書中介紹了23種設(shè)計(jì)模式,也是Java程序員口中常提的設(shè)計(jì)模式,但實(shí)際的設(shè)計(jì)模式遠(yuǎn)超23種。那GOF又是什么?它是上面提到的四位作者的合稱(Gang of Four 四人幫)。 面向?qū)ο缶幊毯兔嫦驅(qū)ο笤O(shè)計(jì)原則相信對設(shè)計(jì)模式有一定了解的老鐵肯定有聽過5種、6種和7種的版本。 其實(shí)最開始的設(shè)計(jì)原則是5種,也叫SOLID原則,也是下列表格中前五種原則的英文首字母組合。 而6種原則是在5種的基礎(chǔ)上增加了迪米特法則,也是現(xiàn)在絕大多數(shù)書中的所講的版本。 7種則是在6種的基礎(chǔ)上增加了合成復(fù)用原則,但是7種存在一些爭議,到底是堅(jiān)持6種還是7種就仁者見仁智者見智了。
學(xué)設(shè)計(jì)模式有什么用學(xué)設(shè)計(jì)模式的原因我覺得基本逃不開以下這四點(diǎn): 應(yīng)付面試(最直觀的點(diǎn)) 為了炫技 提升個(gè)人編碼內(nèi)功 為了更好的理解開源框架設(shè)計(jì)思想 ... GOF-23設(shè)計(jì)模式類型在GOF-23設(shè)計(jì)模式中,對23種設(shè)計(jì)模式進(jìn)行了分類,分別為創(chuàng)建型、結(jié)構(gòu)型和行為型。 創(chuàng)建型:強(qiáng)調(diào)的是對象創(chuàng)建的模式,而不是直接實(shí)例化對象。 結(jié)構(gòu)型:關(guān)注類和對象的組合,使用繼承來組合接口并定義組合對象以獲得新功能的方法。說的再白一點(diǎn)就是通過組合類或?qū)ο笮纬尚碌臄?shù)據(jù)結(jié)構(gòu)去解決更為復(fù)雜的需求。 行為型:關(guān)注對象之間的通信。 講到這里,肯定有人會說23種設(shè)計(jì)模式到底是哪23種。別急,下面就給大家附上圖。 以上所介紹的內(nèi)容大家也都可以在wiki百科中找到,地址如下: 地址: https://en./wiki/Design_Patterns 總結(jié)好了,本文到此也就結(jié)束了,最后咱們來一個(gè)總結(jié)回顧下上面的知識點(diǎn)。 通過本篇文章我們可以學(xué)到如下幾點(diǎn): 什么是設(shè)計(jì)模式 什么是GOF-23設(shè)計(jì)模式 面向?qū)ο缶幊毯兔嫦驅(qū)ο笤O(shè)計(jì)原則 學(xué)設(shè)計(jì)模式有什么用 GOF-23設(shè)計(jì)模式種類劃分 最后再給大家多提一嘴,Java設(shè)計(jì)模式也是指的GOF-23設(shè)計(jì)模式,但是這種叫法是不對的。靜態(tài)語言和動態(tài)語言以及各種語言的特性,并不是所有的設(shè)計(jì)模式跨語言使用都是合適的,有些設(shè)計(jì)模式剛誕生的時(shí)候是跟作者當(dāng)時(shí)所用的語言有一些關(guān)聯(lián),但是換到其它語言也許會有其它的解決方案,這一點(diǎn)也是大家需要注意的。 |
|