常見(jiàn)的面向?qū)ο笤O(shè)計(jì)原則

單一職責(zé)原則(SRP)(Single Responsiblility Principle)

一個(gè)類(lèi)只做一種類(lèi)型責(zé)任边苹,當(dāng)這個(gè)類(lèi)需要承當(dāng)其他類(lèi)型的責(zé)任的時(shí)候审丘,就需要分解這個(gè)類(lèi)。不過(guò)在現(xiàn)實(shí)開(kāi)發(fā)中勾给,這個(gè)原則是最不可能遵守的滩报,因?yàn)槊總€(gè)人對(duì)一個(gè)類(lèi)的哪些功能算是同一類(lèi)型的職責(zé)判斷都不相同。

開(kāi)放-關(guān)閉原則(OCP)(Open Close Principle)

軟件實(shí)體應(yīng)該是可擴(kuò)展播急,而不可修改的脓钾。也就是說(shuō),你寫(xiě)完一個(gè)類(lèi)桩警,要想添加功能可训,不能修改原有類(lèi),而是想辦法擴(kuò)展該類(lèi)捶枢。有多種設(shè)計(jì)模式可以達(dá)到這一要求握截。
對(duì)拓展開(kāi)放,對(duì)修改關(guān)閉烂叔。

里氏替換原則(LSP)(Liskov Subsititution Principle)

當(dāng)一個(gè)子類(lèi)的實(shí)例應(yīng)該能夠替換任何其超類(lèi)的實(shí)例時(shí)谨胞,它們之間才具有is-A關(guān)系。也就是說(shuō)接口或父類(lèi)出現(xiàn)的地方蒜鸡,實(shí)現(xiàn)接口的類(lèi)或子類(lèi)可以代入胯努,這主要依賴(lài)于多態(tài)和繼承牢裳。

依賴(lài)倒置原則(DIP)(Dependence Inversion Principle)

高層模塊不應(yīng)該依賴(lài)于低層模塊,二者都應(yīng)該依賴(lài)于抽象
抽象不應(yīng)該依賴(lài)于細(xì)節(jié)叶沛,細(xì)節(jié)應(yīng)該依賴(lài)于抽象

接口隔離原則(ISP)(Interface segregation Principle)

不能強(qiáng)迫用戶(hù)去依賴(lài)那些他們不使用的接口蒲讯。換句話(huà)說(shuō),使用多個(gè)專(zhuān)門(mén)的接口比使用單一的總接口總要好灰署。 不要提供一個(gè)大的接口包括所有功能判帮,應(yīng)該根據(jù)功能把這些接口分割,減少依賴(lài)溉箕。

最少知識(shí)原則(LKP)(Least Knowledge Principle)

設(shè)計(jì)系統(tǒng)時(shí)候脊另,盡量減少對(duì)象間的耦合,方法調(diào)用必須保持在一定的界限范圍之類(lèi)约巷,盡量減少對(duì)象的依賴(lài)關(guān)系偎痛。

其他原則

  • 面向接口編程
  • 優(yōu)先使用組合,而非繼承
  • 一個(gè)類(lèi)需要的數(shù)據(jù)應(yīng)該隱藏在類(lèi)的內(nèi)部
  • 類(lèi)之間應(yīng)該零耦合独郎,或者只有傳導(dǎo)耦合踩麦,換句話(huà)說(shuō),類(lèi)之間要么沒(méi)有關(guān)系氓癌,要么只使用另一個(gè)類(lèi)的接口提供的操作
  • 水平方向上盡可能統(tǒng)一地分布系統(tǒng)功能谓谦;

我們?cè)趯?xiě)代碼的時(shí)候最痛苦的莫過(guò)于改需求,因?yàn)槊看胃男枨筇巴瘢紩?huì)導(dǎo)致代碼的大改動(dòng)反粥,所以我們應(yīng)該把經(jīng)常變動(dòng)的地方封裝起來(lái),讓這些地方的變動(dòng)不影響其他地方疲迂。這就是設(shè)計(jì)模式的主要作用才顿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市尤蒿,隨后出現(xiàn)的幾起案子郑气,更是在濱河造成了極大的恐慌,老刑警劉巖腰池,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尾组,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡示弓,警方通過(guò)查閱死者的電腦和手機(jī)讳侨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)奏属,“玉大人跨跨,你說(shuō)我怎么就攤上這事∨钠ぃ” “怎么了歹叮?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)铆帽。 經(jīng)常有香客問(wèn)我咆耿,道長(zhǎng),這世上最難降的妖魔是什么爹橱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任萨螺,我火速辦了婚禮,結(jié)果婚禮上愧驱,老公的妹妹穿的比我還像新娘慰技。我一直安慰自己,他們只是感情好组砚,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布吻商。 她就那樣靜靜地躺著,像睡著了一般糟红。 火紅的嫁衣襯著肌膚如雪艾帐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天盆偿,我揣著相機(jī)與錄音柒爸,去河邊找鬼。 笑死事扭,一個(gè)胖子當(dāng)著我的面吹牛捎稚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播求橄,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼今野,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了罐农?” 一聲冷哼從身側(cè)響起腥泥,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啃匿,沒(méi)想到半個(gè)月后蛔外,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溯乒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年夹厌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裆悄。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡矛纹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出光稼,到底是詐尸還是另有隱情或南,我是刑警寧澤孩等,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站采够,受9級(jí)特大地震影響肄方,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蹬癌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一权她、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逝薪,春花似錦隅要、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至虏肾,卻和暖如春尼啡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背询微。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工崖瞭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撑毛。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓书聚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親藻雌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雌续,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • 單一職責(zé)原則 (SRP) 全稱(chēng) SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,752評(píng)論 2 5
  • 面向?qū)ο蟮?個(gè)基本要素: 封裝、繼承胯杭、多態(tài) 面向?qū)ο蟮?個(gè)基本設(shè)計(jì)原則: 單一職責(zé)原則(Single-Respos...
    badcyc閱讀 842評(píng)論 0 4
  • 前言 設(shè)計(jì)模式六大原則網(wǎng)上資料比較多比較亂驯杜,本文將網(wǎng)上的一些好的資料做一下整理,以便隨時(shí)翻閱做个。友情提示鸽心,設(shè)計(jì)模式雖...
    簡(jiǎn)單的土豆閱讀 1,428評(píng)論 0 10
  • 程序設(shè)計(jì)的6大原則: 單一職責(zé)原則里氏替換原則依賴(lài)倒置原則接口隔離原則迪米特法則開(kāi)閉原則 從根本學(xué)好,理解為什么要...
    silencefun閱讀 2,393評(píng)論 1 4
  • 本文出自《Android源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)》中的第一章居暖。 1顽频、優(yōu)化代碼的第一步——單一職責(zé)原則 單一職責(zé)原則的...
    MrSimp1e0閱讀 1,757評(píng)論 1 13