SOLID: The First 5 Principles of Object Oriented Design(oop的5大基礎原則)

S - Single-responsiblity Principle(單一職責原則)A class should have one and only one reason to change, meaning that a class should have only one job. (一個類只應該做一件事)偏窝,讓一個方法或者類的職責盡可能的單一抵代。一個方法的職責單一很容易做到侍筛。

ex: 這是一個不好的實踐志鹃,違反了單一的職責,在這個計算面積的方法左电,計算兩個不同形狀的面積殊鞭。所以違反了simple responsibility principle(SRP)画侣。

違反了SRP原則

正確的實踐方法是將計算每個不同形狀方法都分開备埃,如下所示

計算Circle的方法以及包含的類
計算square的類以及其對應的方法

這樣寫出來的方法就很純粹都只干一件事情姓惑,也就是計算對應形狀的面積。

對于一個類來說按脚,也需要遵守SRP原則于毙,原則如何遵守呢,如果一個類中的private方法過多的話辅搬,就可以整理一下這些private方法是否是和當前的類所做的事情保持一致唯沮,否則的話可以把這些方法抽出來到一個單獨的類中。


O - Open-Closed Principle(開閉原則)

開閉原則的定義是:對象或實體應該對擴展開放堪遂,對修改關閉介蛉。通俗的來講,當業(yè)務發(fā)生變化的時候溶褪,不需要修改原有的方法的存在邏輯币旧。只需要將添加一個新的方法或者新的類來擴展新的功能。還是拿計算不同形狀來舉舉例子竿滨,如果把計算不同形狀的都雜糅在一個if else的block中佳恬,現(xiàn)在的方法是可以計算square和circle,如果在未來的需求中于游,我們還需要計算橢圓形的話毁葱,就需要繼續(xù)添加if else block,這是個很不好實踐贰剥。無論是對于測試還是倾剿,后續(xù)功能的擴展。

違反OCP原則的實踐

什么樣的實踐是一個比較好實踐呢蚌成,我們可以使用策略模式來代替if else block前痘,首先定義一個接口,公開暴露給別人担忧,外界只需要知道這個接口可以計算不同的類型形狀的面積芹缔,需要告訴這個接口,我們要計算的形狀是什么就行了

策略模式
策略模式具體實現(xiàn)

對于新的Area calculator瓶盛,直接加一個新的類實現(xiàn)這個形狀計算的接口即可最欠,不需要改變原有邏輯,直接擴展就即可惩猫。

L - Liskov Substitution Principle(Liskov替換原則)

I - Interface Segregation Principle(接口隔離原則)

D - Dependency Inversion Principle(依賴倒置原則)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末芝硬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子轧房,更是在濱河造成了極大的恐慌拌阴,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奶镶,死亡現(xiàn)場離奇詭異迟赃,居然都是意外死亡,警方通過查閱死者的電腦和手機厂镇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門捺氢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人剪撬,你說我怎么就攤上這事摄乒。” “怎么了残黑?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵馍佑,是天一觀的道長。 經常有香客問我梨水,道長拭荤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任疫诽,我火速辦了婚禮舅世,結果婚禮上旦委,老公的妹妹穿的比我還像新娘。我一直安慰自己雏亚,他們只是感情好缨硝,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著罢低,像睡著了一般查辩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上网持,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天宜岛,我揣著相機與錄音,去河邊找鬼功舀。 笑死萍倡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的辟汰。 我是一名探鬼主播遣铝,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼莉擒!你這毒婦竟也來了酿炸?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涨冀,失蹤者是張志新(化名)和其女友劉穎填硕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹿鳖,經...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡扁眯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了翅帜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姻檀。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涝滴,靈堂內的尸體忽然破棺而出绣版,到底是詐尸還是另有隱情,我是刑警寧澤歼疮,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布杂抽,位于F島的核電站,受9級特大地震影響韩脏,放射性物質發(fā)生泄漏缩麸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一赡矢、第九天 我趴在偏房一處隱蔽的房頂上張望杭朱。 院中可真熱鬧阅仔,春花似錦、人聲如沸弧械。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梦谜。三九已至,卻和暖如春袭景,著一層夾襖步出監(jiān)牢的瞬間唁桩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工耸棒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荒澡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓与殃,卻偏偏與公主長得像单山,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子幅疼,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容