面向對象基本原則

單一原則(SRP):就一個類而言,應該僅有一個引發它變化的緣由。
若是一個類承擔的職責過多,就等於把這些職責耦合在一塊兒,一個職責耦合在一塊兒,一個職責的變化可能會削弱或者抑制這個類完成其餘職責的能力,這種耦合會致使脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。
 
 
開閉原則(OCP):軟件實體(類、模塊、函數等)應該能夠擴展,可是不能夠修改。
在咱們初次編寫代碼時,假設變化不會發生,當變化發生時,咱們就建立抽象來隔離之後發送的同類變化。
面對需求,對程序的改動是經過增長新代碼進行的,而不是更改現有的代碼。
開閉原則是面向對象設計的核心所在。遵循這個原則能夠帶來可維護、可擴展、可複用、靈活性等優點。開發人員應該僅對程序中呈現出的頻繁變化的部分作出抽象。
demo:
咱們須要一個類來作加法運算。客戶端--->加法類
當咱們須要增長減法時,咱們就要修改原來的類,違背了OCP原則,因此抽象出運算類,客戶端-->運算類(加法、減法、乘法等子類)。
 
依賴倒置原則(DIP):高層模塊不該該依賴底層模塊,兩個都應該依賴抽象。抽象不該該依賴細節,但細節應該依賴抽象。
依賴倒置是面向對象設計的標誌,編程時應該考慮如何針對抽象編程而不是針對細節編程,即程序中全部的依賴關係都是終止於抽象類或接口,那就是面向對象的設計。
demo:類A(人)直接依賴於類B(蘋果),若是A修改了爲依賴C(梨)則必須修改A代碼,這樣A是高層代碼,負責複雜業務,B和C是底層模塊。因此ABC3個類都須要抽象,抽象爲People和Fruit2個抽象類。
demo:bufferContainer高層類依賴與ArrayBuffer和ElementArrayBuffer類,但應該使用他們的抽象類Buffer類,而後調用Buffer類的抽象方法。
 
里氏替換原則(LSP):子類型必須可以替換掉他們的父類型。
只有子類能夠替換掉父類,軟件單位的功能不受影響的時候,父類才能真正被複用,而子類也能在父類的基礎上增長新的行爲。
demo:如今父類 動物(跑)<---鳥(飛),如今有企鵝類不會飛,若是繼承自鳥類,那企鵝就會飛的方法,那他去替換鳥類時確定會出錯,因此這裏企鵝類應該繼承到動物類,並現實自身的跑的方法。
相關文章
相關標籤/搜索