Lesson-10 S.O.L.I.D五大原則

S.O.L.I.D五大原則 雖然對(duì)我不陌生 但是他們的JS實(shí)現(xiàn)我沒怎么思考過骇塘,今天看湯姆大叔的博客蘸朋,然后加以總結(jié)核无, 當(dāng)然不是說這五大原則就是真理 你需要根據(jù)你的項(xiàng)目的真實(shí)情況加以使用

  1. The Single Responsibility Principle(單一職責(zé)SRP)
  2. The Open/Closed Principle(開閉原則OCP)
  3. The Liskov Substitution Principle(里氏替換原則LSP)
  4. The Interface Segregation Principle(接口分離原則ISP)
  5. The Dependency Inversion Principle(依賴反轉(zhuǎn)原則DIP)

單一職責(zé)

這個(gè)怎么說呢,就是每個(gè)函數(shù)或者類擁有相對(duì)單一的職責(zé)藕坯,怎么做呢团南,這個(gè)沒有辦法一概而論,我個(gè)人理解就是第一步要邏輯上說的通炼彪,就是不能一聽就是錯(cuò)的吐根,比如食堂的大師傅在做飯的同時(shí)不能還要負(fù)責(zé)擦地一樣。
第二個(gè)要做的就是盡量把邏輯和數(shù)據(jù)拆開辐马,這樣外面只需要修改數(shù)據(jù)而不需要觸碰到邏輯
第三個(gè)就是盡量吧相關(guān)邏輯封裝到一起拷橘,比如我們有個(gè)邏輯用到計(jì)算,那么我們可以把所有的計(jì)算邏輯抽離出來行成一個(gè)新的計(jì)算類

開閉原則

軟件實(shí)體(類,模塊冗疮,方法等等)應(yīng)當(dāng)對(duì)擴(kuò)展開放萄唇,對(duì)修改關(guān)閉,即軟件實(shí)體應(yīng)當(dāng)在不修改的前提下擴(kuò)展赌厅。
我自己粗淺的理解就是 不能因?yàn)樘砑恿诵碌倪壿?就必須把以前 的代碼都要改一下穷绵, 比如 我的類增加了一種Type 我們?nèi)绻途托枰砑右粋€(gè) else if 其實(shí)是不好的 因?yàn)檫@樣第一是把所有類型的邏輯都寫到了一起 其次是可能要修改多處
而我想到解決方式就是子類話 然后實(shí)現(xiàn)不同的接口 這樣的話 當(dāng)邏輯變化的時(shí)候 我們只需要新建一個(gè)類就好了

里氏替換原則

派生類型必須可以替換它的基類型。
這個(gè)我其實(shí)不是特別理解特愿,那么我就先從繼承的角度來說一下仲墨,但是其實(shí)大神們告訴我們不要繼承 要使用組合, 這個(gè)之后再說
從繼承的角度講揍障,我認(rèn)為有兩點(diǎn)

  • 子類必須能繼承父類的所有邏輯目养,如果只想繼承部分代碼,需要把父類再次抽象
  • 即使是重寫了父類的方法毒嫡,也不能使存在的邏輯發(fā)生變化癌蚁,簡單來說,父類有開門 關(guān)門倆方法兜畸,但是子類重寫了開門努释,但是當(dāng)調(diào)用關(guān)門方法,門是不能被關(guān)上的 咬摇,所以子類也許還需要重寫關(guān)門方法

大神告訴我們
盡量使用對(duì)象組合而不是類繼承
里氏替換原則(LSP)的本質(zhì)不是真的和繼承有關(guān)伐蒂,而是行為兼容性。
當(dāng)然這又涉及了另一個(gè)原則 合成復(fù)用
而我的理解就是當(dāng)你需要基類的方法的時(shí)候 可以試著不去繼承 而是選擇擁有一個(gè)基類的對(duì)象作為屬性 然后讓他幫助你實(shí)現(xiàn)功能 當(dāng)然這些需要你視情況而定

接口分離原則

不應(yīng)該強(qiáng)迫客戶依賴于它們不用的方法肛鹏。
不太理解 不過簡單來說就是一個(gè)類不能擁有他不需要的方法或者屬性

依賴倒置原則

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

我的簡單理解就是 不管高級(jí)模塊和低級(jí)模塊是怎么樣的 我們都必須設(shè)計(jì)一個(gè)他們倆交流的接口 這個(gè)接口是不能改變的 這的之后不管他們怎么修改邏輯 都不會(huì)想影響對(duì)方 這個(gè)就是按接口編程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末在扰,一起剝皮案震驚了整個(gè)濱河市缕减,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芒珠,老刑警劉巖桥狡,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異皱卓,居然都是意外死亡总放,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門好爬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來局雄,“玉大人,你說我怎么就攤上這事存炮【娲睿” “怎么了蜈漓?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宫盔。 經(jīng)常有香客問我融虽,道長,這世上最難降的妖魔是什么灼芭? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任有额,我火速辦了婚禮,結(jié)果婚禮上彼绷,老公的妹妹穿的比我還像新娘巍佑。我一直安慰自己,他們只是感情好寄悯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布萤衰。 她就那樣靜靜地躺著,像睡著了一般猜旬。 火紅的嫁衣襯著肌膚如雪脆栋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天洒擦,我揣著相機(jī)與錄音椿争,去河邊找鬼。 笑死熟嫩,一個(gè)胖子當(dāng)著我的面吹牛秦踪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邦危,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舍扰!你這毒婦竟也來了倦蚪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤边苹,失蹤者是張志新(化名)和其女友劉穎陵且,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體个束,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慕购,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茬底。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沪悲。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阱表,靈堂內(nèi)的尸體忽然破棺而出殿如,到底是詐尸還是另有隱情贡珊,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布涉馁,位于F島的核電站门岔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏烤送。R本人自食惡果不足惜寒随,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帮坚。 院中可真熱鬧妻往,春花似錦、人聲如沸叶沛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灰署。三九已至判帮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溉箕,已是汗流浹背晦墙。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肴茄,地道東北人晌畅。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像寡痰,于是被迫代替她去往敵國和親抗楔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

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

  • 單一職責(zé)原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,768評(píng)論 2 5
  • 做后臺(tái)產(chǎn)品的時(shí)候拦坠,為了避免設(shè)計(jì)地凌亂连躏,想了解一些系統(tǒng)設(shè)計(jì)模式思想,于是找高內(nèi)聚低耦合相關(guān)的文章贞滨。這篇文章是摘自網(wǎng)友...
    徐薇薇閱讀 2,200評(píng)論 0 0
  • 設(shè)計(jì)模式之六大原則(轉(zhuǎn)載) 關(guān)于設(shè)計(jì)模式的六大設(shè)計(jì)原則的資料網(wǎng)上很多...
    霄霄霄霄閱讀 900評(píng)論 0 1
  • 本文出自《Android源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)》中的第一章入热。 1、優(yōu)化代碼的第一步——單一職責(zé)原則 單一職責(zé)原則的...
    MrSimp1e0閱讀 1,776評(píng)論 1 13
  • 《拆掉思維里的墻》——古典 If you shed tears when you miss the sun you...
    思小遠(yuǎn)閱讀 464評(píng)論 5 6