面向?qū)ο蟮牧笤瓌t

單一職責原則--SRP(Single Responsibility Principle)

僅有一個引起其變化的原因

  • 單一職責原則的定義是就一個類而言,應該僅有一個引起他變化的原因。也就是說一個類應該只負責一件事情。如果一個類負責了方法M1,方法M2兩個不同的事情,當M1方法發(fā)生變化的時候,我們需要修改這個類的M1方法,但是這個時候就有可能導致M2方法不能工作。這個不是我們期待的,但是由于這種設(shè)計卻很有可能發(fā)生。所以這個時候,我們需要把M1方法,M2方法單獨分離成兩個類。讓每個類只專心處理自己的方法。
  • 單一職責原則的好處如下:
    • 可以降低類的復雜度,一個類只負責一項職責,這樣邏輯也簡單很多
    • 提高類的可讀性,和系統(tǒng)的維護性,因為不會有其他奇怪的方法來干擾我們理解這個類的含義
    • 當發(fā)生變化的時候,能將變化的影響降到最小,因為只會在這個類中做出修改。

開閉原則--OCP(Open Close Principle)

一個軟件實體應當對擴展開放,對修改關(guān)閉。即軟件實體應盡量在不修改原有代碼的情況下進行擴展。

  • 開閉原則和單一職責原則一樣,是非常基礎(chǔ)而且一般是常識的原則。開閉原則的定義是軟件中的對象(類,模塊,函數(shù)等)應該對于擴展是開放的,但是對于修改是關(guān)閉的。
    當需求發(fā)生改變的時候,我們需要對代碼進行修改,這個時候我們應該盡量去擴展原來的代碼,而不是去修改原來的代碼,因為這樣可能會引起更多的問題。
  • 這個準則和單一職責原則一樣,是一個大家都這樣去認為但是又沒規(guī)定具體該如何去做的一種原則。
  • 開閉原則我們可以用一種方式來確保他,我們用抽象去構(gòu)建框架,用實現(xiàn)擴展細節(jié)。這樣當發(fā)生修改的時候,我們就直接用抽象了派生一個具體類去實現(xiàn)修改。

里式替換原則--LSP(Liskov Substitution Principle)

所有引用基類(父類)的地方必須能透明地使用其子類的對象。

  • 子類可以去擴展父類的功能,但是不能改變父類原有的功能
    • 子類可以實現(xiàn)父類的抽象方法,但是不能覆蓋父類的非抽象方法。
    • 子類可以增加自己獨有的方法。
    • 當子類的方法重載父類的方法時候,方法的形參要比父類的方法的輸入?yún)?shù)更加寬松。
    • 當子類的方法實現(xiàn)父類的抽象方法時,方法的返回值要比父類更嚴格。

依賴倒置原則--DIP(Dependence Inversion Principle)

抽象不應該依賴于細節(jié),細節(jié)應當依賴于抽象。換言之,要針對接口編程,而不是針對實現(xiàn)編程。

  • 依賴倒置原則指的是一種特殊的解耦方式,使得高層次的模塊不應該依賴于低層次的模塊的實現(xiàn)細節(jié)的目的,依賴模塊被顛倒了。
  • 這也是一個讓人難懂的定義,他可以簡單來說就是
    • 高層模塊不應該依賴底層模塊,兩者都應該依賴其抽象
    • 抽象不應該依賴細節(jié)
    • 細節(jié)應該依賴抽象

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

使用多個專門的接口,而不使用單一的總接口,即客戶端不應該依賴那些它不需要的接口。

  • 客戶端不應該依賴他不需要的接口
  • 換一種說法就是類間的依賴關(guān)系應該建立在最小的接口上。
  • 讓調(diào)用者依賴的接口盡可能的小。例如人類分男人和女人,男人和女人都要吃飯,但是只有女人每個月來大姨媽,那么如果你設(shè)計一個接口里面除了吃飯還有來大姨媽同時給男人和女人用就不合適了。

迪米特原則--LOD(Law of Demeter 又名Least Knowledge Principle)

一個軟件實體應當盡可能少地與其他實體發(fā)生相互作用。

  • 迪米特原則也被稱為最小知識原則,他的定義一個對象應該對其他對象保持最小的了解。
  • 因為類與類之間的關(guān)系越密切,耦合度越大,當一個類發(fā)生改變時,對另一個類的影響也越大,所以這也是我們提倡的軟件編程的總的原則:低耦合,高內(nèi)聚。
  • 一個類應該對自己需要調(diào)用的類知道得最少,類的內(nèi)部如何實現(xiàn)、如何復雜都與調(diào)用者或者依賴者沒關(guān)系,調(diào)用者或者依賴者只需要知道他需要的方法即可,其他的我一概不關(guān)心。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容