設計模式(一)基本介紹

一、簡介

設計模式是一套被反復使用、多數人知曉的、經過分類的、代碼設計經驗的總結。目的是為了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。

下圖為常用的23中設計模式,整個系列參考《Head First 設計模式》,加深印象,方便查閱。
因此博客中會引入書中的一些一些案例。

范圍 創建型模式 結構型模式 行為型模式
類模式 工廠方法 (類)適配器 模板方法、解釋器
對象模式 單例 原型 抽象工廠 建造者 代理 (對象)適配器 橋接 裝飾 外觀 享元 組合 策略 命令 職責鏈 狀態 觀察者 中介者 迭代器 訪問者 備忘錄
設計模式-引自百度

二、設計模式的六大原則

總原則:開閉原則

基本概念:當應用的需求改變時,在不修改軟件實體的源代碼或者二進制代碼的前提下,可以擴展模塊的功能,使其滿足新的需求。

理解:舉個例子,一款小說閱讀器伴隨著很多的翻頁動畫,但為了應對后期可能會增加新的翻頁動畫的情況,因此可以通過抽象類為翻頁動畫,由不同的子類去實現翻頁邏輯,達到實現翻頁動畫的目的。因此簡單的理解就是通過接口或者抽象類為定義一個抽象層,而將相同的可變因素封裝在相同的具體實現類中。

1、單一職責原則

基本概念:單一職責原則規定一個類應該有且僅有一個引起它變化的原因,否則類應該被拆分

2、里氏替換原則

基本概念:里氏替換原則主要闡述了有關繼承的一些原則,也就是什么時候應該使用繼承,什么時候不應該使用繼承,以及其中蘊含的原理。里氏替換原是繼承復用的基礎,它反映了基類與子類之間的關系,是對開閉原則的補充,是對實現抽象化的具體步驟的規范。子類可以擴展父類的功能,但不能改變父類原有的功能

3、依賴倒轉原則

基本概念:這個是開閉原則的基礎,具體內容:面向接口編程,依賴于抽象而不依賴于具體。寫代碼時用到具體類時,不與具體類交互,而與具體類的上層接口交互,達到降低客戶與實現模塊之間的耦合。

理解:使用接口或者抽象類的目的是制定好規范和契約,而不去涉及任何具體的操作,把展現細節的任務交給它們的實現類去完成。

4、接口隔離原則

基本概念:這個原則的意思是:每個接口中不存在子類用不到卻必須實現的方法,如果不然,就要將接口拆分。使用多個隔離的接口,比使用單個接口(多個接口方法集合到一個的接口)要好。

5、迪米特法則

基本概念:一個類對自己依賴的類知道的越少越好。也就是說無論被依賴的類多么復雜,都應該將邏輯封裝在方法的內部,通過public方法提供給外部。這樣當被依賴的類變化時,才能最小的影響該類。

6、合成復用原則

基本概念:要求在軟件復用時,要盡量先使用組合或者聚合等關聯關系來實現,其次才考慮使用繼承關系來實現。

理解:舉個例子理解,電腦分為筆記本、臺式機,筆記本有各種顏色,臺式機也有各種顏色,在面向對象設計時,我們通常會按這個順序理解,但為達到服用,我們可以將顏色與電腦綁定即可。

三、設計原則:

  • 找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。
  • 針對接口編程,而不是針對實現編程。
  • 多用組合,少用繼承。
  • 為了交互之間松耦合設計而努力。
  • 類用該對擴展開發,對修改關閉。
  • 要依賴抽象,不要依賴具體類。

四、設計模式:

下面對這些部分常用設計模式具體學習,目錄:

設計模式(二)策略模式
設計模式(三)觀察者模式
設計模式(四)裝飾模式
設計模式(五)工廠模式
設計模式(六)單件模式
設計模式(七)適配器模式
設計模式(八)代理模式
設計模式(九)建造者模式
計劃:
設計模式暫時記錄到這里,后面會計劃結合源碼深入學習

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,234評論 2 375

推薦閱讀更多精彩內容

  • 鏈接:https://github.com/WiKi123/DesignPattern作者: WiKi123(gi...
    樹懶啊樹懶閱讀 3,580評論 0 2
  • 設計模式匯總 一、基礎知識 1. 設計模式概述 定義:設計模式(Design Pattern)是一套被反復使用、多...
    MinoyJet閱讀 3,960評論 1 15
  • 一、設計模式的分類 總體來說設計模式分為三大類: 創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者...
    RamboLI閱讀 767評論 0 1
  • 張博士跳樓自殺了!這個消息如一聲巨雷在朋友圈炸了! 所有人都認為,張簡是一個非常有上進心的青年才俊!年紀輕輕拿到了...
    范二小姐姐閱讀 3,805評論 8 10
  • 大概是最近被六年級小盆友的文刷屏了 那句開頭的“我還可以見到她 所以這不算是傳統意義上的離別”確是別有意味的驚艷。...
    32號元素閱讀 246評論 0 0