Java設計模式

此系列文章為清華大學出版社出版劉偉編著《Java設計模式》的學習筆記狰住。

設計模式定義

設計模式(Design Pattern)是一套被反復使用的碳胳、多數(shù)人知曉的、經(jīng)過分類編目的代碼設計經(jīng)驗的總結。使用設計模式是為了可重用代碼嚎研、讓代碼更容易被他人理解并且提高代碼的可靠性。設計模式是一種對于軟件系統(tǒng)中不斷重現(xiàn)的設計問題的解決方案進行文檔化的技術,也是一種共享專家經(jīng)驗的技術临扮。

GoF(Gang of Four:四位軟件工程學者)對設計模式的定義如下
設計模式是在特定環(huán)境下為解決某一通用軟件設計問題提供的一套定制的解決方案论矾,該方案描述了對象和類之間的相互作用。

GoF的23種設計模式簡介

1 創(chuàng)建型模式

模式名稱 模式簡介
抽象工廠模式 提供一個創(chuàng)建一系列相關或相互依賴對象的接口杆勇,而無需指定它們具體的類
建造者模式 將一個復雜對象的構建與它的表示分離贪壳,使得同樣的構建過程可以創(chuàng)建不同的表示
工廠方法模式 定義一個用于創(chuàng)建對象的接口,但是讓子類決定將哪一個實例化蚜退。該模式讓一個類的實例化延遲到其子類
原型模式 使用原型實例指定待創(chuàng)建對象的類型闰靴,并且通過復制這個原型來創(chuàng)建新的對象
單例模式 確保一個類只有一個實例,并提供一個全局的訪問點來訪問這個唯一的實例

2 結構型模式

模式名稱 模式簡介
適配器模式 將一個類的接口轉換成客戶希望的另一個接口钻注。該模式讓接口不兼容的類可以一起工作
橋接模式 將抽象部分與它的實現(xiàn)部分解耦蚂且,使得兩個都能夠獨立變化
組合模式 組合多個對象形成樹形結構以表示具有部分-整體關系的層次結構。該模式讓客戶端可以統(tǒng)一對待單個對象的和組合對象
裝飾模式 動態(tài)地給一個對象增加一些額外的職責幅恋,就擴展功能而言杏死,裝飾模式提供了一種比使用子類更加靈活的替代方案
外觀模式 為子系統(tǒng)的一組接口提供一個統(tǒng)一的入口。外觀模式定義了一個高層接口捆交,這個接口使得這一子系統(tǒng)更加容易使用
享元模式 運用共享技術有效地支持大量細粒度對象的復用
代理模式 給某一個對象提供一個代理或占位符淑翼,并且代理對象來控制對原對象的訪問

2 行為型模式

模式名稱 模式簡介
職責鏈模式 避免將一個請求的發(fā)送者與接收者耦合在一起,讓多個對象都有機會處理請求品追。將接收請求的對象連成一條鏈玄括,并且 沿著這條鏈傳遞請求,知道有一個對象能夠處理它為止
命令模式 將一個請求封裝為一個對象诵盼,從而可用不同的請求對客戶進行參數(shù)化惠豺,對請求排隊或者記錄請求日志,以及支持可撤銷的操作
解釋器模式 給定一個語言风宁,定義它的文法的一種表示洁墙,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子
迭代器模式 提供一種方法順序訪問一個聚合對象中的一個元素戒财,而又不用暴露該對象的內部表示
中介模式 定義一個對象來封裝一系列對象的交互热监。中介者模式使各對象之間不需要顯式地相互引用,從而使其耦合松散饮寞,而且可以獨立地改變它們之間地交互
備忘錄模式 在不破壞封裝的前提下捕獲一個對象的內部狀態(tài)孝扛,并在該對象之外保存這個狀態(tài),這樣可以在以后將對象恢復到原先保存的狀態(tài)
觀察者模式 定義對象之間的一種一對多依賴關系幽崩,使得每當一個對象狀態(tài)發(fā)生改變時其相關依賴對象皆得到通知并被自動更新
狀態(tài)模式 允許一個對象在其內部狀態(tài)改變時改變它的行為苦始。對象看起來似乎修改了它的類
策略模式 定義一系列算法,將每一個算法封裝起來慌申,并讓它們可以相互替換陌选。策略模式讓算法可以獨立于使用它的客戶而變化
模板方法模式 定義一個操作系統(tǒng)中算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變一個算法的結構即可重新定義該算法的某些特定步驟
訪問者模式 表示一個作用于謳歌對象結構中的各個元素的操作咨油。訪問這模式可以在不改變個元素的類的前提下定義作用于這些元素的新操作
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末您炉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子役电,更是在濱河造成了極大的恐慌赚爵,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件法瑟,死亡現(xiàn)場離奇詭異冀膝,居然都是意外死亡,警方通過查閱死者的電腦和手機瓢谢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門畸写,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氓扛,你說我怎么就攤上這事枯芬。” “怎么了采郎?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵千所,是天一觀的道長。 經(jīng)常有香客問我蒜埋,道長淫痰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任整份,我火速辦了婚禮待错,結果婚禮上,老公的妹妹穿的比我還像新娘烈评。我一直安慰自己火俄,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布讲冠。 她就那樣靜靜地躺著瓜客,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竿开。 梳的紋絲不亂的頭發(fā)上谱仪,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音否彩,去河邊找鬼疯攒。 笑死,一個胖子當著我的面吹牛列荔,可吹牛的內容都是我干的卸例。 我是一名探鬼主播称杨,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼筷转!你這毒婦竟也來了?” 一聲冷哼從身側響起悬而,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤呜舒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笨奠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袭蝗,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年般婆,在試婚紗的時候發(fā)現(xiàn)自己被綠了到腥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔚袍,死狀恐怖乡范,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情啤咽,我是刑警寧澤晋辆,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站宇整,受9級特大地震影響瓶佳,放射性物質發(fā)生泄漏。R本人自食惡果不足惜鳞青,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一霸饲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臂拓,春花似錦厚脉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至童番,卻和暖如春精钮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背剃斧。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工轨香, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人幼东。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓臂容,卻偏偏與公主長得像科雳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脓杉,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351