設(shè)計模式(一)——概述

一、設(shè)計模式簡介

設(shè)計模式是一套被反復(fù)使用的底燎、多數(shù)人知曉的褥赊、經(jīng)過分類編目的庆揪、代碼設(shè)計經(jīng)驗的總結(jié)匙握。使用設(shè)計模式是為了重用代碼囚枪、讓代碼更容易被他人理解派诬、保證代碼可靠性。 毫無疑問眶拉,設(shè)計模式于己于他人于系統(tǒng)都是多贏的千埃,設(shè)計模式使代碼編制真正工程化,設(shè)計模式是軟件工程的基石忆植,如同大廈的一塊塊磚石一樣放可。項目中合理地運用設(shè)計模式可以完美地解決很多問題,每種模式在現(xiàn)實中都有相應(yīng)的原理來與之對應(yīng)朝刊,每種模式都描述了一個在我們周圍不斷重復(fù)發(fā)生的問題耀里,以及該問題的核心解決方案,這也是設(shè)計模式能被廣泛應(yīng)用的原因拾氓。

面向?qū)ο笤O(shè)計原則

對接口編程而不是對實現(xiàn)編程冯挎。
優(yōu)先使用對象組合而不是繼承。

二房官、 設(shè)計模式的類型

根據(jù)設(shè)計模式的參考書 Design Patterns - Elements of Reusable Object-Oriented Software(中文譯名:《設(shè)計模式 - 可復(fù)用的面向?qū)ο筌浖亍罚?中所提到的,總共有 23 種設(shè)計模式蜡峰。這些模式可以分為三大類:
創(chuàng)建型模式(Creational Patterns)
結(jié)構(gòu)型模式(Structural Patterns)
行為型模式(Behavioral Patterns)

1. 創(chuàng)建型模式

這些設(shè)計模式提供了一種在創(chuàng)建對象的同時隱藏創(chuàng)建邏輯的方式粥诫,而不是使用 new 運算符直接實例化對象谊囚。這使得程序在判斷針對某個給定實例需要創(chuàng)建哪些對象時更加靈活。

工廠模式(Factory Pattern)
抽象工廠模式(Abstract Factory Pattern)
單例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)

2. 結(jié)構(gòu)型模式

這些設(shè)計模式關(guān)注類和對象的組合余境。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。

適配器模式(Adapter Pattern)
橋接模式(Bridge Pattern)
過濾器模式(Filter、Criteria Pattern)
組合模式(Composite Pattern)
裝飾器模式(Decorator Pattern)
外觀模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)

3. 行為型模式

這些設(shè)計模式特別關(guān)注對象之間的通信。

責(zé)任鏈模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解釋器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
備忘錄模式(Memento Pattern)
觀察者模式(Observer Pattern)
狀態(tài)模式(State Pattern)
空對象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
訪問者模式(Visitor Pattern)

三、 設(shè)計模式的六大原則

1、開閉原則(Open Close Principle)

開閉原則的意思是:對擴展開放,對修改關(guān)閉。在程序需要進行拓展的時候钥弯,不能去修改原有的代碼总处,實現(xiàn)一個熱插拔的效果忆肾。簡言之旭从,是為了使程序的擴展性好,易于維護和升級。想要達到這樣的效果和悦,我們需要使用接口和抽象類退疫,后面的具體設(shè)計中我們會提到這點。

2鸽素、里氏代換原則(Liskov Substitution Principle)

里氏代換原則是面向?qū)ο笤O(shè)計的基本原則之一褒繁。 里氏代換原則中說,任何基類可以出現(xiàn)的地方馍忽,子類一定可以出現(xiàn)棒坏。LSP 是繼承復(fù)用的基石,只有當(dāng)派生類可以替換掉基類遭笋,且軟件單位的功能不受到影響時俊抵,基類才能真正被復(fù)用,而派生類也能夠在基類的基礎(chǔ)上增加新的行為坐梯。里氏代換原則是對開閉原則的補充徽诲。實現(xiàn)開閉原則的關(guān)鍵步驟就是抽象化,而基類與子類的繼承關(guān)系就是抽象化的具體實現(xiàn)吵血,所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范谎替。

3、依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)

這個原則是開閉原則的基礎(chǔ)蹋辅,具體內(nèi)容:針對接口編程钱贯,依賴于抽象而不依賴于具體。

4侦另、接口隔離原則(Interface Segregation Principle)

這個原則的意思是:使用多個隔離的接口秩命,比使用單個接口要好。它還有另外一個意思是:降低類之間的耦合度褒傅。由此可見弃锐,其實設(shè)計模式就是從大型軟件架構(gòu)出發(fā)、便于升級和維護的軟件設(shè)計思想殿托,它強調(diào)降低依賴霹菊,降低耦合。

5支竹、迪米特法則旋廷,又稱最少知道原則(Demeter Principle)

最少知道原則是指:一個實體應(yīng)當(dāng)盡量少地與其他實體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對獨立礼搁。

6饶碘、合成復(fù)用原則(Composite Reuse Principle)

合成復(fù)用原則是指:盡量使用合成/聚合的方式,而不是使用繼承馒吴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扎运,一起剝皮案震驚了整個濱河市卑雁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绪囱,老刑警劉巖测蹲,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鬼吵,居然都是意外死亡扣甲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門齿椅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琉挖,“玉大人,你說我怎么就攤上這事涣脚∈颈玻” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵遣蚀,是天一觀的道長矾麻。 經(jīng)常有香客問我,道長芭梯,這世上最難降的妖魔是什么险耀? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮玖喘,結(jié)果婚禮上甩牺,老公的妹妹穿的比我還像新娘。我一直安慰自己累奈,他們只是感情好贬派,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著澎媒,像睡著了一般搞乏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旱幼,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天查描,我揣著相機與錄音突委,去河邊找鬼柏卤。 笑死,一個胖子當(dāng)著我的面吹牛匀油,可吹牛的內(nèi)容都是我干的缘缚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼敌蚜,長吁一口氣:“原來是場噩夢啊……” “哼桥滨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤齐媒,失蹤者是張志新(化名)和其女友劉穎蒲每,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喻括,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡邀杏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了唬血。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片望蜡。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拷恨,靈堂內(nèi)的尸體忽然破棺而出脖律,到底是詐尸還是另有隱情,我是刑警寧澤腕侄,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布小泉,位于F島的核電站,受9級特大地震影響冕杠,放射性物質(zhì)發(fā)生泄漏膏孟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一拌汇、第九天 我趴在偏房一處隱蔽的房頂上張望柒桑。 院中可真熱鬧,春花似錦噪舀、人聲如沸魁淳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽界逛。三九已至,卻和暖如春纺座,著一層夾襖步出監(jiān)牢的瞬間息拜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工净响, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留少欺,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓馋贤,卻偏偏與公主長得像赞别,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子配乓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

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

  • 參考資料:菜鳥教程之設(shè)計模式 設(shè)計模式概述 設(shè)計模式(Design pattern)代表了最佳的實踐仿滔,通常被有經(jīng)驗...
    Steven1997閱讀 1,176評論 1 12
  • 設(shè)計模式之六大原則(轉(zhuǎn)載) 關(guān)于設(shè)計模式的六大設(shè)計原則的資料網(wǎng)上很多...
    霄霄霄霄閱讀 900評論 0 1
  • 什么是設(shè)計模式 在GoF(Gang of Four)的書籍《Design Patterns - Elements ...
    zhrowable閱讀 1,029評論 0 1
  • 軟件開發(fā)是始于面向過程的 軟件開發(fā)是始于面向過程的惠毁,因為面向過程地解決問題更直接,軟件本身就是一個解決問題的過程崎页;...
    侏羅紀(jì)猿閱讀 759評論 0 2
  • 前言 設(shè)計模式六大原則網(wǎng)上資料比較多比較亂鞠绰,本文將網(wǎng)上的一些好的資料做一下整理,以便隨時翻閱飒焦。友情提示洞豁,設(shè)計模式雖...
    簡單的土豆閱讀 1,437評論 0 10