GeekBand 設(shè)計模式 筆記&心得 第一周(1)設(shè)計原則

1.什么是設(shè)計模式?

在我的理解中設(shè)計模式是一種抽象設(shè)計的方法(面向?qū)ο蟠撮希M件分裝箩做,設(shè)計模式,架構(gòu)模式)妥畏。

說說這幾種的不同之處邦邦。這幾種抽象方法是由小至大,由內(nèi)至外醉蚁,由細(xì)節(jié)至整體的燃辖。

面向?qū)ο蟾嗟氖钦Z法上的抽象,通過繼承(復(fù)用現(xiàn)有代碼)网棍,封裝(隱藏內(nèi)部實(shí)現(xiàn))黔龟,多態(tài)(改寫對象行為),模板等特性將程序中功能相似或者實(shí)現(xiàn)目標(biāo)相似的這一類東西包裝成一個整體滥玷,一個對象稱之為面向?qū)ο缶幊獭?/p>

而組件封裝是讓不同對象各司其職氏身,從而達(dá)到松耦合。

設(shè)計模式是將解決某一類常常碰到的問題最好的解決方案惑畴、設(shè)計經(jīng)驗(yàn)的總結(jié)蛋欣。

而架構(gòu)模式則是對一整個項(xiàng)目的架構(gòu)做出最好的解決方法。

這些事情的核心就是復(fù)用代碼如贷,從復(fù)雜的代碼中抽象出最好的陷虎、不變的方法套用到其他的程序中到踏,大大降低了程序需求變化所付出的代價(將代價減為最小)尚猿,解放了生產(chǎn)力窝稿。

2.面向?qū)ο笤O(shè)計原則(重要)

1.依賴倒置原則(DIP)

1.高層模塊(穩(wěn)定)不應(yīng)該依賴于底層模塊(變化),二者都應(yīng)該依賴于抽象

2.抽象(穩(wěn)定)不應(yīng)該依賴于實(shí)現(xiàn)細(xì)節(jié)(變化)凿掂,實(shí)現(xiàn)細(xì)節(jié)應(yīng)該依賴于抽象(穩(wěn)定)

簡單來說就是變化的要依賴穩(wěn)定的伴榔,實(shí)現(xiàn)細(xì)節(jié)要依賴高層的(聲明抽象調(diào)用)。這樣子當(dāng)程序需求改變使我們只需要在特定的某個模塊(實(shí)現(xiàn)細(xì)節(jié)的模塊)更改代碼缠劝,而不需要在許多的文件中都要更改代碼(這樣做的話一定是高層依賴于細(xì)節(jié)了潮梯,要更改設(shè)計模式甚至重構(gòu)代碼)。

2.開放封閉原則

1.對擴(kuò)張開放惨恭,對更改封閉

2.類模塊應(yīng)該是可擴(kuò)展的,但是不可修改

這一點(diǎn)仔細(xì)想想就是對上一點(diǎn)的另一種表述耙旦,高層模塊應(yīng)該是穩(wěn)定的(封閉不可修改的)脱羡,而擴(kuò)張是開放的,可擴(kuò)展的(可以想為實(shí)現(xiàn)細(xì)節(jié)免都,像繼承和派生)

3.單一職業(yè)原則(SRP)

1.一個類應(yīng)該僅有一個引起它變化的原因

2.變化的方向隱含類的責(zé)任

每個類應(yīng)該只能完成一個具體的功能锉罐,做一種單一的job。這樣使得這個類在需要維護(hù)時更加簡便绕娘。

4.Liskov替換原則(LSP)

1.子類必須能夠替換他們的基類(IS-A)

2.繼承表達(dá)類型抽象

子類方法要是父類方法拓展中的一種

子類可以擴(kuò)展父類的功能脓规,但不能改變父類原有的功能

子類可以實(shí)現(xiàn)父類的抽象方法,但不能覆蓋父類的非抽象方法险领。

子類中可以增加自己特有的方法侨舆。

當(dāng)子類的方法重載父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松绢陌。

當(dāng)子類的方法實(shí)現(xiàn)父類的抽象方法時挨下,方法的后置條件(即方法的返回值)要比父類更嚴(yán)格。

5.接口隔離原則(ISP)

1.不應(yīng)該強(qiáng)迫客戶程序依賴它們不用的方法

2.接口應(yīng)該小而完備

一種接口只做一件事脐湾。

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

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

2.繼承在某種程序上破壞了封裝性秤掌,子類父類耦合度高

3.而在對象組合則只要求被組合的對象具有良好的定義的接口愁铺,耦合度低

7.分裝變化點(diǎn)

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

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

1.不降變量類型聲明為某個特定的具體類椒拗,而是聲明為某個接口

2.客戶程序無需獲知對象的具體類型似将,只需要知道對象所具有的接口

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

上面三點(diǎn)不做補(bǔ)充說明了在验,說得很明白了玷氏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市腋舌,隨后出現(xiàn)的幾起案子盏触,更是在濱河造成了極大的恐慌,老刑警劉巖块饺,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赞辩,死亡現(xiàn)場離奇詭異,居然都是意外死亡授艰,警方通過查閱死者的電腦和手機(jī)辨嗽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淮腾,“玉大人糟需,你說我怎么就攤上這事」瘸” “怎么了洲押?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長圆凰。 經(jīng)常有香客問我杈帐,道長,這世上最難降的妖魔是什么专钉? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任挑童,我火速辦了婚禮,結(jié)果婚禮上驶沼,老公的妹妹穿的比我還像新娘炮沐。我一直安慰自己,他們只是感情好回怜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布大年。 她就那樣靜靜地躺著,像睡著了一般玉雾。 火紅的嫁衣襯著肌膚如雪翔试。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天复旬,我揣著相機(jī)與錄音垦缅,去河邊找鬼。 笑死驹碍,一個胖子當(dāng)著我的面吹牛壁涎,可吹牛的內(nèi)容都是我干的凡恍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼怔球,長吁一口氣:“原來是場噩夢啊……” “哼嚼酝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起竟坛,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤闽巩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后担汤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涎跨,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年崭歧,在試婚紗的時候發(fā)現(xiàn)自己被綠了隅很。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡率碾,死狀恐怖外构,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情播掷,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布撼班,位于F島的核電站歧匈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砰嘁。R本人自食惡果不足惜件炉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矮湘。 院中可真熱鬧斟冕,春花似錦、人聲如沸缅阳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽十办。三九已至秀撇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間向族,已是汗流浹背呵燕。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留件相,地道東北人再扭。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓氧苍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泛范。 傳聞我的和親對象是個殘疾皇子让虐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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

  • 設(shè)計模式基本原則 開放-封閉原則(OCP),是說軟件實(shí)體(類敦跌、模塊澄干、函數(shù)等等)應(yīng)該可以拓展,但是不可修改柠傍。開-閉原...
    西山薄涼閱讀 3,760評論 3 13
  • 設(shè)計模式匯總 一麸俘、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 3,919評論 1 15
  • 設(shè)計模式六大原則 設(shè)計模式六大原則(1):單一職責(zé)原則 定義:不要存在多于一個導(dǎo)致類變更的原因惧笛。通俗的說从媚,即一個類...
    viva158閱讀 764評論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法患整,內(nèi)部類的語法拜效,繼承相關(guān)的語法,異常的語法各谚,線程的語...
    子非魚_t_閱讀 31,596評論 18 399
  • 寶寶睡覺愛偏頭 圓圓的腦袋變扁頭 麻麻們該行動起來了 讓寶寶睡的香 不偏頭 神器在這里 pigeon成立于1957...
    來福饞閱讀 626評論 0 0