SOLID 原則

SOLID

? ? ? ? 作為開篇审胚,這篇文章主要來介紹SOLID原則吓揪。 SOLID 原則提供了五條指導思想包帚,如果我們遵從它們的話镣典, 將可以顯著的提升我們軟件可維護性兔毙。

? ? ? ? SOLID原則是針對面向?qū)ο缶幊毯驮O計的五大依賴關系管理。SOLID首字母縮寫詞兄春,是由Robert Cecil Martin (也被稱為 “Bob叔叔” )提出的澎剥。每個字母代表另外一個三個字母的首字母縮寫, 用來描述一個原則赶舆。

? ? ? ? 當我們處理在一份依賴關系很糟糕的軟件時哑姚,代碼可能會變得僵化,脆弱芜茵,難以重用叙量。我們勢必會改變現(xiàn)有功能或添加新的功能,而僵化的代碼會讓這變得舉步維艱九串。脆弱的代碼很容易造成bug的產(chǎn)生绞佩,常見的情況是你一個區(qū)域的代碼發(fā)生變化時候,造成你其他模塊出現(xiàn)bug猪钮。如果你遵從SOLID原則品山,那么你可以編寫出更靈活更健壯的代碼,并且具有更高的重用性烤低。

Single Responsibility Principle

? ? ? ? 單一職責原則(SRP)聲明:“引起類變化的因素永遠不要多余一個”肘交。這意味著你需要設計你的類,使得每個類都只有一個目的扑馁。這并不意味著每個類應該只有一個方法涯呻,而是說類中所有的方法都要與該類的主要功能相關。那些有多個職責的類檐蚜,應該被分成新的類魄懂。

? ? ? ? 當一個類具有了多項職責,它需要被更改的可能性也隨之增加闯第。每次一個類的修改也會使得bug產(chǎn)生的風險增加市栗。而通過集中職責與一點會使得風險被有效的限制。

Open / Closed Principle

? ? ? ? 開閉原則(OCP)指出:“軟件實體(classes, modules, functions etc.)應該對拓展開放,對修改關閉”填帽。該規(guī)則的“封閉”部分規(guī)定蛛淋,一旦模塊被開發(fā)和測試完成,代碼被修改的原因應該只有修復bug這一種情況篡腌。 “開放”部分說褐荷,您應該能夠擴展現(xiàn)有代碼(而不是修改之前的代碼)以引入新功能。與SRP一樣嘹悼,該原理通過限制對現(xiàn)有代碼的更改來降低引入新錯誤的風險叛甫。


Liskov Substitution Principle

? ? ? 里氏替換原則(LSP)聲明:“所有引用基類的地方必須能透明地使用其子類的對象”。如果你創(chuàng)建了一個給定類型關系的類杨伙,那么你應該可以提供該類型或任意該類型子類的對象其监,而不會出現(xiàn)意外的結(jié)果,并且沒有依賴的類知道被提供依賴類的確切類型限匣。如果必須檢查依賴關系的類型抖苦,以便可以根據(jù)類型修改行為,或者如果子類型產(chǎn)生意外的規(guī)則或副作用米死,則代碼可能變得更加復雜锌历,僵化和脆弱。

Dependency Inversion Principle?

? ? ? ? 依賴倒置原則(DIP)有兩條聲明峦筒。第一個是高級模塊不應該依賴于低級模塊究西。兩者都應該依賴于抽象。第二部分規(guī)則是抽象不應該依賴于細節(jié)勘天。細節(jié)應該依賴于抽象怔揩。

? ? ? ? DIP主要涉及到應用中層次化的概念,其中較低級別的模塊處理細節(jié)的功能脯丝,較高級別的模塊使用較低級別的類來實現(xiàn)更大的任務。該原則規(guī)定了在類之間存在依賴關系的情況下伏伐,應使用抽象(如接口)來定義它們宠进,而不是直接引用類。 這減少了由較低級別模塊的變化導致的錯誤藐翎,導致較高層的錯誤材蹬。 DIP經(jīng)常在依賴注入中被使用。

? ? ? Interface Segregation Principle ?

接口分離原則(ISP)指出:“客戶端不應該強制依賴那些他們沒有使用到的接口”吝镣。這個規(guī)則意味著當一個類依賴另一個類時堤器,接口中可以被依賴類顯示的成員的數(shù)量應該被最小化。通常當您創(chuàng)建一個具有大量方法和屬性的類時末贾,該類將被其他類使用闸溃,并且只訪問其一個或兩個成員。隨著他們意識到的成員數(shù)量的增加,這些類更加緊密地耦合在一起辉川。當您遵循ISP時表蝙,大類實現(xiàn)了多個更小的接口,根據(jù)用途對功能進行分組乓旗。依賴關系與那些相關聯(lián)用于松耦合府蛇,增加健壯性,靈活性以及可復用性屿愚。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汇跨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妆距,更是在濱河造成了極大的恐慌穷遂,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毅厚,死亡現(xiàn)場離奇詭異塞颁,居然都是意外死亡,警方通過查閱死者的電腦和手機吸耿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門祠锣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咽安,你說我怎么就攤上這事伴网。” “怎么了妆棒?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵澡腾,是天一觀的道長。 經(jīng)常有香客問我糕珊,道長动分,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任红选,我火速辦了婚禮澜公,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喇肋。我一直安慰自己坟乾,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布蝶防。 她就那樣靜靜地躺著甚侣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪间学。 梳的紋絲不亂的頭發(fā)上殷费,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天印荔,我揣著相機與錄音,去河邊找鬼宗兼。 笑死躏鱼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的殷绍。 我是一名探鬼主播染苛,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼主到!你這毒婦竟也來了茶行?” 一聲冷哼從身側(cè)響起失球,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呵俏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后茎芭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牧牢,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡看锉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了塔鳍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伯铣。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖轮纫,靈堂內(nèi)的尸體忽然破棺而出腔寡,到底是詐尸還是另有隱情,我是刑警寧澤掌唾,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布放前,位于F島的核電站,受9級特大地震影響糯彬,放射性物質(zhì)發(fā)生泄漏凭语。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一撩扒、第九天 我趴在偏房一處隱蔽的房頂上張望叽粹。 院中可真熱鬧,春花似錦却舀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至但校,卻和暖如春螃诅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工术裸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留倘是,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓袭艺,卻偏偏與公主長得像搀崭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子猾编,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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