設(shè)計模式面向?qū)ο蟮牧笤O(shè)計原則

在應(yīng)用的開發(fā)過程中意敛,最難的不是完成應(yīng)用的開發(fā)工作,而是在后續(xù)的升級刘急、維護中讓應(yīng)用系統(tǒng)能夠擁抱變化函荣。擁抱變化也就是意味著在滿足需求且不破壞系統(tǒng)穩(wěn)定性的前提下保持高可擴展性、高內(nèi)聚扳肛、低耦合傻挂,在經(jīng)歷了各版本的變更之后依舊保持清晰、靈活挖息、穩(wěn)定的系統(tǒng)架構(gòu)金拒。
雖然在實際的應(yīng)該開發(fā)中,要飽受產(chǎn)品的折磨和摧殘套腹、需要在極其有限的研發(fā)時間里完成功能绪抛、上線。但是我們?nèi)孕璞M量保持遵循面向?qū)ο蟮牧笤O(shè)計原則电禀,這才能讓我們不必在各種需求的苦海中掙扎幢码。
1.單一責任原則
定義:就一個類而言尖飞,應(yīng)該只有一個引起變化的原因。
優(yōu)點:低耦合
缺點:責任界限比較難劃分
總結(jié):在研發(fā)當中政基,設(shè)計的規(guī)范應(yīng)盡量滿足單一責任原則。接口一定要做到單一責任原則沮明,類的設(shè)計盡量做到只有一個引起變化的原因辕坝。
2.里氏替換原則

定義: 所有引用父類的地方,必要能透明的使用其子類
優(yōu)點:低耦合酱畅,高內(nèi)聚琳袄,增強程序的健壯性圣贸。版本升級時挚歧,只需新增對應(yīng)的實現(xiàn)子類,不必影響舊的業(yè)務(wù)邏輯
缺點: 繼承是侵入性的吁峻,子類必須擁有分類的所有屬性和方法滑负,同時可能造成子類代碼冗余用含、靈活性降低
總結(jié): 在項目中,采用里氏替換原則啄骇,應(yīng)盡量避免子類的個性(擁有自己的業(yè)務(wù)實現(xiàn)方法)缸夹,把子類當父類使用痪寻,個性無法使用虽惭,單獨作為一個業(yè)務(wù),耦合關(guān)系復(fù)雜
3.依賴倒置原則

定義: 模塊間的依賴通過抽象發(fā)生顾画,實現(xiàn)類之間不發(fā)生直接的依賴關(guān)系匆笤,其依賴關(guān)系是通過接口或抽象類產(chǎn)生的。
優(yōu)點: 減少類間的耦合性炮捧,提高系統(tǒng)的穩(wěn)定性,降低并行開發(fā)引起的風(fēng)險咆课,提高代碼的可讀性和維護性
缺點: 前期需要耗時進行結(jié)構(gòu)設(shè)計及抽象提取
總結(jié): 依賴倒置原則的本質(zhì)就是通過抽象(接口或抽象類)使各個類或模塊的實現(xiàn)彼此獨立傀蚌,不相互影響,實現(xiàn)模塊間的松耦合善炫。在實踐中可以根據(jù)以下幾個規(guī)則來衡量:

每個類盡量都有接口或抽象類,或者抽象類和兩者都具備
任何類盡量都不應(yīng)該從具體的類派生
結(jié)合里氏替換原則
接口隔離原則

定義: 客戶端不應(yīng)該依賴它不需要的接口窜醉,類間的依賴關(guān)系應(yīng)該建立在最小的接口上
優(yōu)點: 接口隔離的原則將非常龐大、臃腫的接口拆分成更小的和更具體的接口榨惰,這樣客戶將會只需要知道他們感興趣的方法。接口隔離原則的目的是系統(tǒng)解開耦合居凶,從而容易重構(gòu)藤抡、更改和重新部署缺點: 需要耗時統(tǒng)籌接口隔離顆粒度,接口拆分的標準缠黍、顆粒度比較難劃分,太大降低靈活性瓷式,太小疾忍,導(dǎo)致接口數(shù)據(jù)增大,開發(fā)成本更高總結(jié): 接口隔離原則是對接口的定義瓤漏,同時也是對類的定義颊埃,接口和類盡量使用原子接口和原子類來組織。在實踐中可以根據(jù)以下幾個規(guī)則來衡量:

一個接口只服務(wù)于一個子模塊或業(yè)務(wù)邏輯
通過業(yè)務(wù)邏輯壓縮接口中的public方法饥漫,盡量讓接口精簡罗标,而不是暴露一大堆方法
已被污染的接口庸队,盡量去修改彻消,若變更風(fēng)險較大宙拉,則采用設(shè)配器模式進行轉(zhuǎn)換處理
根據(jù)業(yè)務(wù),每個項目或產(chǎn)品都有特定的環(huán)境因素,拆分的標準可能不同御板,不要硬套標準
5.迪米特原則

定義: 一個對象應(yīng)該對自己需要耦合或調(diào)用的類知道最少牛郑,盡量不要對外公布太多的public方法和非靜態(tài)的public變量
優(yōu)點: 迪米特法則的核心觀念就是類間解耦,提高類的復(fù)用率
缺點: 可能產(chǎn)生大量的中轉(zhuǎn)或者跳轉(zhuǎn)類淹朋,導(dǎo)致系統(tǒng)的復(fù)雜性提高
總結(jié): 迪米特法則是要求類間解耦,但解耦是有限度酪惭。在實際的項目中者甲,要適度的參考運用,嚴格執(zhí)行就是“過猶不及”
6.開放封閉原則

定義:軟件中的對象(類虏缸、模塊、函數(shù)等)應(yīng)該對于擴展是開放的窥岩,但是宰缤,對于修改是封閉的。
優(yōu)點:

避免修改代碼朦乏,影響已經(jīng)通過單元測試等原業(yè)務(wù)邏輯
可以提高復(fù)用性、可維護性

缺點: 需要預(yù)知變化呻疹,全局統(tǒng)籌筹陵。
總結(jié): 在將開閉原則運行到實際的項目中需注意:

抽象約束朦佩,通過接口或者抽象類約束擴展语稠,對擴展進行邊界開放。
元數(shù)據(jù)控制模塊行為宙暇,通過配置參數(shù)(文件占贫,數(shù)據(jù)庫),減少重復(fù)開發(fā)
制定項目章程
封裝變化瞳收,第一將相同的變化封裝到同一個接口或者抽象類中螟深;第二將不同的變化封裝到不同的接口或抽象類中界弧,不應(yīng)該有兩個不同的變化出現(xiàn)在同一個接口或抽象類中垢箕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末条获,一起剝皮案震驚了整個濱河市帅掘,隨后出現(xiàn)的幾起案子修档,更是在濱河造成了極大的恐慌称诗,老刑警劉巖寓免,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袜香,死亡現(xiàn)場離奇詭異蜈首,居然都是意外死亡欢策,警方通過查閱死者的電腦和手機踩寇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門俺孙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睛榄,“玉大人场靴,你說我怎么就攤上這事旨剥∨⒈撸” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奠蹬。 經(jīng)常有香客問我囤躁,道長荔睹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任宵距,我火速辦了婚禮吨拗,結(jié)果婚禮上婿斥,老公的妹妹穿的比我還像新娘哨鸭。我一直安慰自己,他們只是感情好像鸡,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布坟桅。 她就那樣靜靜地躺著,像睡著了一般仅乓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宾抓,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天豫喧,我揣著相機與錄音,去河邊找鬼紧显。 笑死,一個胖子當著我的面吹牛涉兽,可吹牛的內(nèi)容都是我干的篙程。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼拥诡,長吁一口氣:“原來是場噩夢啊……” “哼氮发!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起折柠,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤扇售,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后承冰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡寂屏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年迁霎,在試婚紗的時候發(fā)現(xiàn)自己被綠了百宇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡昌粤,死狀恐怖啄刹,靈堂內(nèi)的尸體忽然破棺而出涮坐,到底是詐尸還是另有隱情誓军,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布廓译,位于F島的核電站债查,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏征绸。R本人自食惡果不足惜俄占,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缸榄。 院中可真熱鬧,春花似錦她肯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亭珍。三九已至枝哄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挠锥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工纱控, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菜秦,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓尔店,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嚣州。 傳聞我的和親對象是個殘疾皇子共螺,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

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