設(shè)計模式簡介

我們在開發(fā)的過程中食铐,為了使代碼更加的靈活和易于擴(kuò)展,總會使用各種各樣的設(shè)計模式來設(shè)計我們的代碼。那么本系列文章就來詳細(xì)的介紹下設(shè)計模式

設(shè)計模式的分類

在java中按照設(shè)計模式大體上分為三類

1.創(chuàng)建型模式:抽象了對象實例化的過程用來幫助創(chuàng)建對象的實例

共5種:單例模式、建造者模式煌珊、原型模式、工廠方法模式泌豆、抽象工廠模式

2.結(jié)構(gòu)型模式:描述如何組合類和對象以獲得更大的結(jié)構(gòu)

共有7種:適配器模式定庵、裝飾模式、代理模式、門面模式(也稱為外觀模式)蔬浙、組合模式猪落、享元模式、橋梁模式

3.行為型模式:描述算法和對象間職責(zé)的分配

共有11種:策略模式敛滋、模板方法模式许布、觀察者模式兴革、迭代器模式绎晃、命令模式、責(zé)任鏈模式杂曲、備忘錄模式庶艾、訪問者模式、狀態(tài)模式擎勘、中介者模式咱揍、解釋器模式
當(dāng)然也有其他的分類方式,我們這里就不在進(jìn)行討論了

設(shè)計模式和面向?qū)ο笤O(shè)計原則

面向?qū)ο蟮姆治鲈O(shè)計有很多原則棚饵,這些原則大都從思想層面煤裙,給我們指出面向?qū)ο笏枷雽釉O(shè)計的正確方向。我們在進(jìn)行面向?qū)ο蠓治鲈O(shè)計的時候噪漾,應(yīng)該盡力的去遵守這些原則硼砰。

設(shè)計模式遵循的6大原則

1.單一職責(zé)原則(Single Responsibility Principle ,簡稱 SRP)

定義:應(yīng)該有且僅有一個原因引起類的變更
優(yōu)點
1.降低了類的復(fù)雜性欣硼,各個類的職責(zé)清晰明確
2.提高了代碼的可讀性和可維護(hù)性
3.提高了系統(tǒng)的拓展性

2.里式替換原則(Liskov Substitution Principle ,簡稱 LSP)

定義:所有引用基類的地方都必須能透明地使用其子類的對象
里氏替換原則為良好的繼承定義了一個規(guī)范题翰,一句簡單的定義包含了四層含義:
1.子類必須完全實現(xiàn)父類的方法。如果子類不能完整地實現(xiàn)父類的方法诈胜,或者父類的某些方法在子類中已經(jīng)發(fā)生了改變豹障,則建議斷開父子繼承關(guān)系,采用依賴焦匈、聚集血公、組合等關(guān)系代替繼承;
2.子類可以有自己特有的屬性和方法缓熟;
3子類覆蓋或?qū)崿F(xiàn)父類的方法時輸入?yún)?shù)可以被放大(子類中的方法的前置條件必須與父類中被重寫的方法的前置條件相同或者更加寬松)累魔。
4重寫或?qū)崿F(xiàn)父類的方法時輸出結(jié)果可以被縮小
優(yōu)點

  1. 提高代碼復(fù)用性
  2. 父類的屬性方法可以用于子類
  3. 可以輕松的定義子類
  4. 使設(shè)計應(yīng)用程序變得簡單

3.依賴倒置原則(Dependence Inversion Principle,簡稱DIP)

定義:模塊間的依賴通過抽象發(fā)生,實現(xiàn)類之間不發(fā)生直接依賴關(guān)系荚虚,其依賴關(guān)系是通過接口或者抽象類產(chǎn)生的(即依賴抽象而不依賴具體)
優(yōu)點
1.規(guī)避一些非技術(shù)因素引起的問題
2.可以減少需求變化引起的工作量劇增的情況
依賴倒置原則在小型項目中很難體現(xiàn)

4薛夜、接口隔離原則(Interface Segregation Principle,簡稱ISP)

定義:
使用多個隔離的借口來降低耦合度版述,即將接口細(xì)化梯澜,為每個功能模塊提供單一的接口,而不是提供一個龐大而臃腫的接口來使用
接口隔離原則包含了一下四層含義:
1.接口細(xì)化,但是不能違背單一職責(zé)原則
2.接口要高內(nèi)聚晚伙,即提高接口吮龄、類、模塊的處理能力咆疗,減少對外交互漓帚。
3.定制服務(wù),即只為訪問者提供需要的方法
4.接口設(shè)計要有限度午磁,不可過度細(xì)化

5尝抖、迪米特法則(Low of Demeter,簡稱LoD迅皇,也稱為最少知道原則)

定義
一個對象應(yīng)該對其它對象有最少的了解
這句話的意思就是說一個類盡量不要對外公布太多的public方法和非靜態(tài)的內(nèi)部變量昧辽,盡量內(nèi)斂,這樣做是為了減少在修改時風(fēng)險的擴(kuò)大登颓。
迪特米法則的核心觀念就是類間解耦搅荞,弱耦合,只有弱耦合了之后框咙,類的復(fù)用率才得以提高

6咕痛、開閉原則

定義
簡單來說就是對修改關(guān)閉,對擴(kuò)展開放
注意:開閉原則對修改關(guān)閉喇嘱,對拓展開放茉贡,并不意味著不做任何修改,底層模塊的變更必然要有高層模塊進(jìn)行耦合婉称,否則就是一個孤立無意義的代碼片段块仆。
開閉原則的重要性
1.利于測試
2.提高了復(fù)用性
3.提高了可維護(hù)性
4.面向?qū)ο箝_發(fā)的要求

參考

《設(shè)計模式之禪》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市王暗,隨后出現(xiàn)的幾起案子悔据,更是在濱河造成了極大的恐慌,老刑警劉巖俗壹,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件科汗,死亡現(xiàn)場離奇詭異,居然都是意外死亡绷雏,警方通過查閱死者的電腦和手機(jī)头滔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涎显,“玉大人坤检,你說我怎么就攤上這事∑谙牛” “怎么了早歇?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我箭跳,道長晨另,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任谱姓,我火速辦了婚禮借尿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屉来。我一直安慰自己路翻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布奶躯。 她就那樣靜靜地躺著帚桩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘹黔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天莫瞬,我揣著相機(jī)與錄音儡蔓,去河邊找鬼。 笑死疼邀,一個胖子當(dāng)著我的面吹牛喂江,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旁振,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼获询,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拐袜?” 一聲冷哼從身側(cè)響起吉嚣,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹬铺,沒想到半個月后尝哆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甜攀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年秋泄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片规阀。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恒序,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谁撼,到底是詐尸還是另有隱情歧胁,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站与帆,受9級特大地震影響了赌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玄糟,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一勿她、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阵翎,春花似錦逢并、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贰军,卻和暖如春玻蝌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背词疼。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工俯树, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贰盗。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓许饿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親舵盈。 傳聞我的和親對象是個殘疾皇子陋率,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

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