設(shè)計模式的原則

設(shè)計模式的原則

設(shè)計模式的原則總結(jié)起來就是抵御變化溪烤。我們在軟件設(shè)計的時候县昂,當(dāng)功能需求發(fā)生變化的時候,盡可能的不去修改源代碼棍弄,盡量的將變化的范圍降到最小望薄。

1. 依賴倒置原則(DIP)

比如說:現(xiàn)在我們定義了一個框架,我們調(diào)用這個框架去畫各種各樣的形狀『艋現(xiàn)在我們將所有形狀都抽象成一個抽象類痕支,各個具體的形狀就是去繼承這個抽象類,并完成各自的細(xì)節(jié)蛮原。我們知道這里的抽象類是穩(wěn)定的卧须,而各種具體的形狀是變化的。所以我們框架實現(xiàn)的時候就應(yīng)該穩(wěn)定的抽象類儒陨,而不應(yīng)該依賴于不穩(wěn)定的底層模塊花嘶。

總結(jié):高層模塊(穩(wěn)定)不應(yīng)該依賴于低層模塊(變化),二者都應(yīng)該依賴于抽象(穩(wěn)定)蹦漠。

? ? ? ? 抽象(穩(wěn)定)不應(yīng)該依賴于實現(xiàn)細(xì)節(jié)(變化)椭员,實現(xiàn)細(xì)節(jié)應(yīng)該依賴于抽象(穩(wěn)定)。

2. 開放封閉原則(OCP)

比如前面提到的各個形狀的抽象類笛园,對于這個抽象類隘击,各種各樣的具體形狀都是可以繼承的侍芝,但是出現(xiàn)新的形狀的時候,我們只是應(yīng)該修改各個具體類的實現(xiàn)細(xì)節(jié)埋同,不應(yīng)該去修改抽象類的源代碼

總結(jié):對擴(kuò)展開放州叠,對修改關(guān)閉,類模塊應(yīng)該是可擴(kuò)展的莺禁,但是不可修改留量。

3. 單一職責(zé)原則(SRP)

一個類應(yīng)該是代表的一類事物,而不應(yīng)該包含任何其他的事物哟冬。

一個類應(yīng)該僅有一個引起它變化的原因楼熄,變化的方向隱含著類的責(zé)任。

4. Liskov替換原則(LSP)

因為我們在高層設(shè)計的時候浩峡,依賴的時更穩(wěn)定的抽象類可岂,所以說我們在初始化一個子類的時候,應(yīng)該用一個具體抽象類的指針去接收翰灾。所以子類應(yīng)該是一個基類缕粹。如果子類發(fā)現(xiàn)基類的方法不可用,然后進(jìn)行異常處理纸淮,那么這樣的子類就不能替換基類平斩,那么就不符合我們的里氏替換原則。

總結(jié):子類必須能夠替換他們的基類(IS-A)咽块。繼承表達(dá)類型抽象绘面。

5. 接口隔離原則(ISP)

比如說:如果是本類使用的接口,就應(yīng)該private侈沪,如果只是子類要使用的揭璃,用pretected。不要所有的接口的作用范圍都是public亭罪,真正有必要的時候才將接口暴露瘦馍。

不應(yīng)該強(qiáng)迫客戶程序依賴他們不用的方法,接口應(yīng)該小而完備应役。

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

類繼承通常為“白箱復(fù)用”,對象組合通常為“黑箱復(fù)用”

繼承在某種程度上破壞了封裝性箩祥,子類父類耦合度高

而對象組合只要求被組合的對象具有良好定義的接口呻惕,耦合度低。

7. 封裝變化點

使用封裝來創(chuàng)建對象之間的分界層滥比,讓設(shè)計者可以在分界層的一側(cè)進(jìn)行修改,而不會對另一側(cè)產(chǎn)生不良的影響做院,從而實現(xiàn)層次間的松耦合盲泛。

8. 針對接口編程濒持,而不是針對實現(xiàn)編程

不將變量類型聲明為某個特定的具體類,而是聲明為某個接口

客戶程序無需獲知對象的具體類型寺滚,只需要知道對象所具有哪些接口

減少系統(tǒng)中各部分的依賴關(guān)系柑营,從而實現(xiàn)“高內(nèi)聚,松耦合”的類型設(shè)計方案村视。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末官套,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蚁孔,更是在濱河造成了極大的恐慌奶赔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杠氢,死亡現(xiàn)場離奇詭異站刑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鼻百,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門绞旅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人温艇,你說我怎么就攤上這事因悲。” “怎么了勺爱?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵晃琳,是天一觀的道長。 經(jīng)常有香客問我邻寿,道長蝎土,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任绣否,我火速辦了婚禮誊涯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒜撮。我一直安慰自己暴构,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布段磨。 她就那樣靜靜地躺著取逾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苹支。 梳的紋絲不亂的頭發(fā)上砾隅,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機(jī)與錄音债蜜,去河邊找鬼晴埂。 笑死究反,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的儒洛。 我是一名探鬼主播精耐,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼琅锻!你這毒婦竟也來了卦停?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤恼蓬,失蹤者是張志新(化名)和其女友劉穎惊完,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滚秩,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡专执,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了郁油。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片本股。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖桐腌,靈堂內(nèi)的尸體忽然破棺而出拄显,到底是詐尸還是另有隱情,我是刑警寧澤案站,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布躬审,位于F島的核電站,受9級特大地震影響蟆盐,放射性物質(zhì)發(fā)生泄漏承边。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一石挂、第九天 我趴在偏房一處隱蔽的房頂上張望博助。 院中可真熱鬧,春花似錦痹愚、人聲如沸富岳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窖式。三九已至,卻和暖如春动壤,著一層夾襖步出監(jiān)牢的瞬間萝喘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蜒灰,地道東北人弦蹂。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像强窖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子削祈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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

  • 現(xiàn)在編程的主流語言基本上都是面向?qū)ο蟮某崮纭H鏑#,C++髓抑,JAVA咙崎。我們在使用時,已經(jīng)構(gòu)造了一個個的類吨拍。但是往往由于...
    shhdjjj閱讀 320評論 0 0
  • 一褪猛、單一職責(zé)原則 單一職責(zé)原則:一個類只負(fù)責(zé)一個功能領(lǐng)域中的相應(yīng)職責(zé)「危或者說伊滋,就一個類而言,應(yīng)該只有一個引起它變化...
    cilla123閱讀 453評論 0 0
  • 原則 1. 開閉原則 對擴(kuò)展開放队秩,對修改關(guān)閉 2. 單一職責(zé)原則 一個類笑旺、 一個接口、一個方法只做一件事馍资,保證功能...
    denkbug閱讀 181評論 0 1
  • 單一職責(zé)原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,761評論 2 5
  • 一些標(biāo)簽 用在頁面頭部或板塊頭部 用在頁面尾部或板塊尾部 用于標(biāo)簽導(dǎo)航 標(biāo)題組 用來劃分區(qū)域 用來在頁面中表示一套...
    喜歡吃法棍泡芙閱讀 347評論 0 0