面向對象基本原則
單一原則(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:現在父類 動物(跑)<---鳥(飛),現在有企鵝類不會飛,如果繼承自鳥類,那企鵝就會飛的方法,那他去替換鳥類時肯定會出錯,所以這里企鵝類應該繼承到動物類,并現實自身的跑的方法。

浙公網安備 33010602011771號