設(shè)計(jì)模式概述

設(shè)計(jì)模式從何而來

軟件工程技術(shù)的模式早敬,起源于建筑領(lǐng)域。模式之父 Christopher Alexander 及其團(tuán)隊(duì)花費(fèi)約20年的時(shí)間婚夫,通過對住宅以及周邊環(huán)境進(jìn)行大量調(diào)查研究和資料收集工作之后發(fā)現(xiàn)人們對舒適住宅和城市環(huán)境存在一些共同的認(rèn)同規(guī)律激才。在Christopher Alexander的經(jīng)典著作《建筑的永恒之道》中鳍贾,給出了關(guān)于模式的定義:每個(gè)模式都描述了一個(gè)在我們的環(huán)境中不斷出現(xiàn)的問題梦抢,然后描述了該問題的解決方案的核心般贼,通過這種方式,我們可以無數(shù)次地重用那些已有的成功的解決方案奥吩,無須再重復(fù)相同的工作哼蛆。

模式是在特定環(huán)境下人們解決某類重復(fù)出現(xiàn)問題的一套成功或有效的解決方案
A pattern is a successful or efficient solution to a recurring problem within a context

1990年,軟件工程界開始關(guān)注Alexander等在建筑方面的重大突破霞赫。由“四人組”(Erich Gamma腮介,Richard Helm,Ralph Johnson和John Vlissides)四名著名的軟件工程學(xué)者端衰,他們在1994年歸納發(fā)表了23種在軟件開發(fā)中使用頻率比較高的設(shè)計(jì)模式叠洗,旨在用模式來統(tǒng)一溝通面向?qū)ο蠓椒ㄔ诜治觥⒃O(shè)計(jì)和實(shí)現(xiàn)之間的鴻溝靴迫。

軟件開發(fā)生命周期的每一個(gè)階段都存在著一些被認(rèn)同的模式

軟件模式的基礎(chǔ)結(jié)構(gòu)

  • 問題描述:待解決的問題是什么
  • 前提條件:在何種環(huán)境或約束條件下使用
  • 解決辦法:如何解決
  • 效果:有哪些優(yōu)缺點(diǎn)
軟件模式基本結(jié)構(gòu)

軟件模式與具體的應(yīng)用領(lǐng)域無關(guān)惕味,無論是移動開發(fā)楼誓,Web開發(fā)還是嵌入式開發(fā)等玉锌,都可以使用軟件模式。

設(shè)計(jì)模式作為最深的分支疟羹,用于在特定條件下為一些重復(fù)出現(xiàn)的軟件設(shè)計(jì)問題提供合理的有效的解決方案主守。

設(shè)計(jì)模式是什么

設(shè)計(jì)模式的定義

設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多數(shù)人知曉的榄融、經(jīng)過分類編目的参淫,代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),使用設(shè)計(jì)模式是為了可重用代碼愧杯、讓代碼更容易被他人理解并保證代碼可靠性涎才。

設(shè)計(jì)模式的內(nèi)容

  • 模式名稱:通過一兩個(gè)詞描述模式的問題、解決方案和效果,以便更好地理解模式并方便開發(fā)人員之間的交流耍铜,絕大多是模式都是根據(jù)其功能或者模式結(jié)構(gòu)來命名
  • 問題:描述了應(yīng)該在何時(shí)使用模式邑闺,它包含了設(shè)計(jì)中存在的問題以及問題存在的原因
  • 解決方案:描述了一個(gè)設(shè)計(jì)模式的組成部分,以及這些組成成分之間的相互關(guān)系棕兼,各自的職責(zé)和協(xié)作方式陡舅,通常通過UML類圖和核心代碼進(jìn)行描述
  • 效果:描述了模式的優(yōu)缺點(diǎn)以及在使用模式時(shí)應(yīng)權(quán)衡的問題

設(shè)計(jì)模式的分類
23個(gè)GoF設(shè)計(jì)模式(還有一個(gè)不再23種GoF設(shè)計(jì)模式種的【簡單工廠模式】)

  • 根據(jù)用途分類
    • 創(chuàng)建型(5個(gè)):主要用于描述如何創(chuàng)建對象

    單例模式 Singleton Pattern
    工廠方法模式 Factory Method Pattern
    抽象工廠模式 Abstract Factory Pattern
    原型模式 Prototype Pattern
    建造者模式 Builder Pattern
    簡單工廠模式 Simple Factory Pattern

    • 結(jié)構(gòu)型(7個(gè)):主要用于描述如何實(shí)現(xiàn)類或?qū)ο蟮慕M合

    適配器模式 Adapter Pattern
    橋接模式 Bridge Pattern
    組合模式 Decorator Pattern

裝飾模式 Decorator Pattern
外觀模式 Facade Pattern
享元模式 Flyweight Pattern
代理模式 Proxy Pattern

  • 行為型(11個(gè)):主要用于描述類或?qū)ο笤鯓咏换ヒ约霸鯓臃峙渎氊?zé)

職責(zé)鏈模式 Chain of Responsibility Pattern
命令模式 Command Pattern
解釋器模式 Interpreter Pattern
迭代器模式 Iterator Pattern
中介者模式 Mediator Pattern
備忘錄模式 Memento Pattern
觀察者模式 Observer Pattern
狀態(tài)模式 State Pattern
策略模式 Strategy Pattern
模版方法模式 Template Method Pattern
訪問者模式 Visitor Pattern

  • 根據(jù)處理對象分類
    • 類模式:用于處理類之間的關(guān)系
    • 對象模式:用于處理對象之間的關(guān)系

這是作為完成劉偉老師的課程后的課程總結(jié)。真的是不錯(cuò)的老師伴挚,祝您教師節(jié)快樂靶衍!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茎芋,隨后出現(xiàn)的幾起案子颅眶,更是在濱河造成了極大的恐慌,老刑警劉巖田弥,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帚呼,死亡現(xiàn)場離奇詭異,居然都是意外死亡皱蹦,警方通過查閱死者的電腦和手機(jī)煤杀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沪哺,“玉大人沈自,你說我怎么就攤上這事」技耍” “怎么了枯途?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長籍滴。 經(jīng)常有香客問我酪夷,道長,這世上最難降的妖魔是什么孽惰? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任晚岭,我火速辦了婚禮,結(jié)果婚禮上勋功,老公的妹妹穿的比我還像新娘坦报。我一直安慰自己,他們只是感情好狂鞋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布片择。 她就那樣靜靜地躺著,像睡著了一般骚揍。 火紅的嫁衣襯著肌膚如雪字管。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機(jī)與錄音嘲叔,去河邊找鬼脐供。 笑死,一個(gè)胖子當(dāng)著我的面吹牛借跪,可吹牛的內(nèi)容都是我干的政己。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掏愁,長吁一口氣:“原來是場噩夢啊……” “哼歇由!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起果港,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沦泌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后辛掠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谢谦,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年萝衩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了回挽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猩谊,死狀恐怖千劈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牌捷,我是刑警寧澤墙牌,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站暗甥,受9級特大地震影響喜滨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撤防,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一虽风、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧即碗,春花似錦焰情、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽合敦。三九已至初橘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背保檐。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工耕蝉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夜只。 一個(gè)月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓垒在,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扔亥。 傳聞我的和親對象是個(gè)殘疾皇子场躯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 設(shè)計(jì)模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計(jì)原則時(shí)需要注意以下幾點(diǎn):a) 高內(nèi)聚、低耦合和單一職能的“沖突”實(shí)際上旅挤,這兩者...
    彥幀閱讀 3,747評論 0 14
  • 一踢关、設(shè)計(jì)模式概念 設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉粘茄、經(jīng)過分類編目的優(yōu)秀代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)签舞。使用設(shè)計(jì)模式的目的就...
    天氣很好丶閱讀 304評論 0 0
  • 前言 一直想寫設(shè)計(jì)模式系列的博客,但是一直下不了決心去寫柒瓣。一方面是自己剛開始工作儒搭,有時(shí)候騰不出那么多時(shí)間學(xué)習(xí),另一...
    X_Meteor閱讀 3,221評論 1 31
  • 設(shè)計(jì)模式概述 設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐芙贫,通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_發(fā)人員所采用...
    熬夜的貓頭鷹閱讀 296評論 0 1
  • 設(shè)計(jì)模式概述 1. 設(shè)計(jì)模式是什么 我們在平時(shí)編寫代碼的過程中师妙,會遇到各種各樣的問題,細(xì)想一下很多問題的解決思路大...
    王小冬閱讀 265評論 0 0