面向對象設計原則

1. 依賴倒置原則

原則定義: 高層模塊不應該依賴底層模塊檩赢,兩者都依賴于抽象吕嘀;抽象不應該依賴細節(jié);細節(jié)應該依賴于抽象 贞瞒。

image.png

2. 開放關閉原則

一個軟件實體類偶房,模塊和函數應該對擴展開放,而對修改關閉军浆,具體來說你應該通過擴展來實現變化棕洋,而不是通過修改原有的代碼來實現變化,該原則是面向對象設計的最基本原則乒融。
實現開閉原則的指導思想就是:

  • 抽象出相對穩(wěn)定的接口掰盘,這部分應該不改動或者很少改動
  • 封裝變化
image.png

3. 單一職責原則

一個類有且僅有一個職責,只有一個引起他變化的原因赞季,其核心是解耦和高內聚

image.png

4 里氏替代原則

所有引用基類的地方必須透明的使用其子類的對象
簡單來說愧捕,所有使用基類代碼的地方,如果換成子類對象的時候還能夠正常運行申钩,則滿足這個原則次绘,否則就是繼承關系有問題,應該廢除兩者的繼承關系,這個原則可以用來判斷我們的對象繼承關系是否合理邮偎。


image.png

5. 接口隔離原則

不能強迫用戶使用他們不使用的接口罗洗,簡單來說就是客戶端需要什么接口,就提供給它什么樣的接口钢猛,其它多余的接口就不要提供,不要讓接口變得臃腫轩缤,否則當對象一個沒有使用的方法被改變了命迈,這個對象也將會受到影響。接口的設計應該遵循最小接口原則


image.png
image.png

6.優(yōu)先使用對象組合而不是類繼承

合比繼承擁有更多的靈活性火的。組合允許在運行時設置屬性壶愤,并通過使用接口來實現,我們可以使用多態(tài)在類運行時改變類的行為馏鹤,從而提供更好的接口實現征椒。

7. 封裝變化點

使用封裝來創(chuàng)建對象之間的分界層,讓設計這可以在分界層的一層進行修改湃累,而不會對另一側產生不良的影響勃救,從而實現層次間的松耦合

8. 針對接口編程,而不是針對實現編程

  • 不將變量類型聲明為某個特定的具體類治力,而是聲明為某個接口蒙秒。
  • 客戶程序無需獲知對象的具體類型,只需要知道對象所具有的接口
  • 減少系統(tǒng)中各部分的依賴關系宵统,從而實現“高內聚晕讲、松耦合”的類型設計方案
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市马澈,隨后出現的幾起案子瓢省,更是在濱河造成了極大的恐慌,老刑警劉巖痊班,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勤婚,死亡現場離奇詭異,居然都是意外死亡辩块,警方通過查閱死者的電腦和手機蛔六,發(fā)現死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來废亭,“玉大人国章,你說我怎么就攤上這事《勾澹” “怎么了液兽?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我四啰,道長宁玫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任柑晒,我火速辦了婚禮欧瘪,結果婚禮上,老公的妹妹穿的比我還像新娘匙赞。我一直安慰自己佛掖,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布涌庭。 她就那樣靜靜地躺著芥被,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坐榆。 梳的紋絲不亂的頭發(fā)上拴魄,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音席镀,去河邊找鬼匹中。 笑死,一個胖子當著我的面吹牛豪诲,可吹牛的內容都是我干的职员。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼跛溉,長吁一口氣:“原來是場噩夢啊……” “哼焊切!你這毒婦竟也來了?” 一聲冷哼從身側響起芳室,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤专肪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后堪侯,有當地人在樹林里發(fā)現了一具尸體嚎尤,經...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年伍宦,在試婚紗的時候發(fā)現自己被綠了芽死。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡次洼,死狀恐怖关贵,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情卖毁,我是刑警寧澤揖曾,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響炭剪,放射性物質發(fā)生泄漏练链。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一奴拦、第九天 我趴在偏房一處隱蔽的房頂上張望媒鼓。 院中可真熱鬧,春花似錦错妖、人聲如沸隶糕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至濒旦,卻和暖如春株旷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尔邓。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工晾剖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梯嗽。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓齿尽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親灯节。 傳聞我的和親對象是個殘疾皇子循头,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容

  • 面向對象的3個基本要素: 封裝、繼承炎疆、多態(tài) 面向對象的5個基本設計原則: 單一職責原則(Single-Respos...
    badcyc閱讀 862評論 0 4
  • 設計模式(Design Pattern)是前輩們在代碼實踐中所總結的經驗卡骂,是解決某些特定問題的套路。在使用一些優(yōu)秀...
    TurboSnail閱讀 695評論 0 0
  • 對于面向對象軟件系統(tǒng)的設計而言形入,在支持可維護性的同時全跨,提高系統(tǒng)的可復用性是一個至關重要的問題,如何同時提高一個軟件...
    zfylin閱讀 309評論 0 1
  • 英文原文:How I explained OOD to my wife我是怎樣教媳婦面向對象編程的我老婆 Farh...
    夜者無念閱讀 4,046評論 2 28
  • 1.單一職責原則 定義 單一職責原則(Single Responsibility Principle, SRP):...
    程序猿_K閱讀 445評論 0 0