常用設計模式與六大原則

標簽(空格分隔): java


六大原則###

參考博客:博客仿荆,以下的內容請參考博客里的例子

  • 單一職責原則:一個類只負責一項職責稍浆。
    弊端:
    類T只負責一個職責P裤唠,這樣設計是符合單一職責原則的昔园。后來由于某種原因,也許是需求變更了详恼,也許是程序的設計者境界提高了,需要將職責P細分為粒度更細的職責P1引几,P2昧互,這時如果要使程序遵循單一職責原則,需要將類T也分解為兩個類T1和T2伟桅,分別負責P1敞掘、P2兩個職責。
    這樣做的風險在于職責擴散的不確定性楣铁,因為我們不會想到這個職責P玖雁,在未來可能會擴散為P1,P2盖腕,P3赫冬,P4……Pn。所以記住赊堪,在職責擴散到我們無法控制的程度之前面殖,立刻對代碼進行重構。)
    所以必要時可以適當違反單一職責原則:
    情況一:只有邏輯足夠簡單哭廉,才可以在代碼級別上違反單一職責原則脊僚;
    情況二:只有類中方法數(shù)量足夠少,才可以在方法級別上違反單一職責原則遵绰;
    情況三:若不滿足以上兩種情況的話辽幌,還是要遵循單一職責原則,一個類負責一個功能職責

需要說明的一點是單一職責原則不只是面向對象編程思想所特有的椿访,只要是模塊化的程序設計乌企,都適用單一職責原則。


  • 里氏替換原則:所有引用基類的地方必須能透明地使用其子類的對象成玫。
    具體操作:
    當使用繼承時加酵,遵循里氏替換原則。類B繼承類A時哭当,除添加新的方法完成新增功能P2外猪腕,盡量不要重寫父類A的方法,也盡量不要重載父類A的方法钦勘。

繼承作為面向對象三大特性之一陋葡,在給程序設計帶來巨大便利的同時,也帶來了弊端彻采。比如使用繼承會給程序帶來侵入性腐缤,程序的可移植性降低捌归,增加了對象間的耦合性,如果一個類被其他的類所繼承岭粤,則當這個類需要修改時惜索,必須考慮到所有的子類,并且父類修改后绍在,所有涉及到子類的功能都有可能會產生故障门扇。

  • 依賴倒置原則:核心思想是面向接口編程

  • 接口隔離原則:
    接口盡量小,但是要有限度偿渡。對接口進行細化可以提高程序設計靈活性是不掙的事實臼寄,但是如果過小,則會造成接口數(shù)量過多溜宽,使設計復雜化吉拳。所以一定要適度。
    (與單一職責原則還是有區(qū)別的)
    單一職責原則原注重的是職責适揉;而接口隔離原則注重對接口依賴的隔離留攒。其二,單一職責原則主要是約束類嫉嘀,其次才是接口和方法炼邀,它針對的是程序中的實現(xiàn)和細節(jié);而接口隔離原則主要約束接口接口剪侮,主要針對抽象拭宁,針對程序整體框架的構建。

  • 迪米特法則:一個對象應該對其他對象保持最少的了解瓣俯。(低耦合杰标,高內聚)
    原因:
    類與類之間的關系越密切,耦合度越大,當一個類發(fā)生改變時,對另一個類的影響也越大叨恨。
    迪米特法則還有一個更簡單的定義:只與直接的朋友通信。
    耦合的方式很多垄惧,依賴、關聯(lián)、組合、聚合等登渣。其中,我們稱出現(xiàn)成員變量毡泻、方法參數(shù)、方法返回值中的類為直接的朋友粘优,而出現(xiàn)在局部變量中的類則不是直接的朋友仇味。也就是說呻顽,陌生的類最好不要作為局部變量的形式出現(xiàn)在類的內部。

  • 開閉原則:一個軟件實體如類丹墨、模塊和函數(shù)應該對擴展開放廊遍,對修改關閉
    當軟件需要變化時,盡量通過擴展軟件實體的行為來實現(xiàn)變化贩挣,而不是通過修改已有的代碼來實現(xiàn)變化喉前。
    開閉原則可能是設計模式六項原則中定義最模糊的一個了,它只告訴我們對擴展開放王财,對修改關閉卵迂,可是到底如何才能做到對擴展開放,對修改關閉绒净,并沒有明確的告訴我們见咒。我們遵循設計模式前面5大原則,以及使用23種設計模式的目的就是遵循開閉原則

  • 總結

單一職責原則告訴我們實現(xiàn)類要職責單一挂疆;里氏替換原則告訴我們不要破壞繼承體系改览;依賴倒置原則告訴我們要面向接口編程;接口隔離原則告訴我們在設計接口的時候要精簡單一缤言;迪米特法則告訴我們要降低耦合宝当。而開閉原則是總綱,他告訴我們要對擴展開放胆萧,對修改關閉庆揩。


常用的設計模式###

  • 單例模式
    參考:博客

未完,待續(xù)鸳碧!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末盾鳞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瞻离,更是在濱河造成了極大的恐慌腾仅,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件套利,死亡現(xiàn)場離奇詭異推励,居然都是意外死亡,警方通過查閱死者的電腦和手機肉迫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門验辞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喊衫,你說我怎么就攤上這事跌造。” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵壳贪,是天一觀的道長陵珍。 經常有香客問我,道長违施,這世上最難降的妖魔是什么互纯? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮磕蒲,結果婚禮上留潦,老公的妹妹穿的比我還像新娘。我一直安慰自己辣往,他們只是感情好兔院,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著排吴,像睡著了一般秆乳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钻哩,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天屹堰,我揣著相機與錄音,去河邊找鬼街氢。 笑死扯键,一個胖子當著我的面吹牛,可吹牛的內容都是我干的珊肃。 我是一名探鬼主播荣刑,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伦乔!你這毒婦竟也來了厉亏?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤烈和,失蹤者是張志新(化名)和其女友劉穎爱只,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體招刹,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡恬试,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疯暑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片训柴。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖妇拯,靈堂內的尸體忽然破棺而出幻馁,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布宣赔,位于F島的核電站预麸,受9級特大地震影響,放射性物質發(fā)生泄漏儒将。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一对蒲、第九天 我趴在偏房一處隱蔽的房頂上張望钩蚊。 院中可真熱鬧,春花似錦蹈矮、人聲如沸砰逻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝠咆。三九已至,卻和暖如春北滥,著一層夾襖步出監(jiān)牢的瞬間刚操,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工再芋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菊霜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓济赎,卻偏偏與公主長得像鉴逞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子司训,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容

  • 設計模式六大原則 設計模式六大原則(1):單一職責原則 定義:不要存在多于一個導致類變更的原因构捡。通俗的說,即一個類...
    viva158閱讀 768評論 0 1
  • 設計模式六大原則(1):單一職責原則 定義:不要存在多于一個導致類變更的原因壳猜。通俗的說勾徽,即一個類只負責一項職責。 ...
    Jabir_Zhang閱讀 646評論 0 3
  • 轉載標注聲明:http://www.uml.org.cn/sjms/201211023.asp 目錄:[設計模式六...
    Bloo_m閱讀 717評論 0 7
  • 單一職責原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,765評論 2 5
  • 程序設計的6大原則: 單一職責原則里氏替換原則依賴倒置原則接口隔離原則迪米特法則開閉原則 從根本學好蓖谢,理解為什么要...
    silencefun閱讀 2,408評論 1 4