1. 程式人生 > >面向物件的四個基本特徵和七大設計原則

面向物件的四個基本特徵和七大設計原則

複習一哈~

基本特徵
抽象
將一些事物的共性抽離出來歸為一個類。

如對於動物,具有生命體徵、活動能力等區別於其它事物的共同特徵

封裝
有選擇地隱藏和暴露資料和方法

比如有U盤這個類,我希望隱藏內部組成和實現,只暴露USB介面以供使用

繼承
子類可以直接使用父類的部分資料和方法,可以有選擇的擴充套件

比如鳥是動物,但鳥擴充套件了飛行的能力。

多型
同一類的物件呼叫相同方法可以表現出不同的行為

比如動物實現了say()方法,猴子、馬等動物重寫了say()方法來表現不同的交流語言。

設計原則
單一職責原則
一個類應該僅有一個引起它變化的原因 
如果一個類承擔的職責過多,那麼這些職責就會相互依賴,一個職責的變化可能會影響另一個職責的履行。

比如andoird裡的Canvas負責圖形佈局,Paint負責繪製風格。如果合為一個類,比如傳入顏色,座標,形狀來繪製圖形,當新增透明度等功能時,所有繪製圖形的方法都需要修改,而分開之後只需修改Paint類。

開放封閉原則
對擴充套件開放,對更改封閉。 
為一個軟體系統增加新功能時,只需要從原來的系統派生出一些新類就可以,不需要修改原來的任何一行程式碼。

里氏替換原則
子類必須能夠替換任何地方的父類 
比如玩具槍繼承槍,但在戰爭中無法代替槍用於攻擊

合成/聚合原則
儘量使用合成/聚合而不使用類繼承

比如把”總監”,”經理”,”學生”當成”人”的子類。錯誤在於把”職位”和”人”的等級結構混淆了。一個人可以同時擁有多個職位。如果按繼承來設計,一個人只能有一個職位,而且無法再改變。 
正確的是建立抽象類”職位”,”總監”,”經理”,”學生”是”職位”的子類,”人”可以擁有多個”職位”。

迪米特法則(最少知道原則)
一個物件應當對其他物件有儘可能少的瞭解

比如你去買一輛車,給錢就行,不需要知道車是怎麼生產的。

依賴倒置原則
讓高層模組不直接依賴低層模組

若高層模組A直接依賴低層模組B,假如要將A改為依賴C,則必須修改A的程式碼。而將A修改為依賴介面I,更換底層模組時只需實現介面I

介面隔離原則
一個介面只應該描述一種能力

例如,琴棋書畫應該設計為四個介面,而不是一個介面中的四個方法,因為琴棋書畫四樣都精通的人還是少數,如果按能力分開,會幾個就實現幾個介面,會使每個介面更好地被複用
--------------------- 
作者:qazwyc 
來源:CSDN 
原文:https://blog.csdn.net/qazwyc/article/details/78005613?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!