三大特性:
- 封裝: 一個類封裝了數據以及操作數據的代碼邏輯體。定義了數據的可訪問屬性(私有、公有)
- 繼承 : 可以讓一個類型獲取另外一個類型的屬性的方式。分為實現繼承和接口繼承
- 多態 : 類實例的一個方法在不同情形下有不同的表現形式,即不同的外在行為。使具有不同的內部結構的對象可以共享相同的外部接口。
五大原則:
單一功能原則 : 每個類型(包括接口和抽象)功能要求單一,只負責一件事情。
開放封閉原則:一個軟件實體應該對擴展開發,對修改關閉。可擴展但是不可更改。
核心:用抽象構建框架,用實現類實現擴展。
替換原則(里氏代換原則):子類能夠替換父類,出現在父類能夠出現的任何地方
當使用繼承時,盡量遵循歷史替換原則,盡量不要去重寫或者重載父類的方法,
以免破壞整個繼承體系的 。
因為父類在定義或者實現某些方法時,規定了必須遵守的規則和契約。
依賴原則:具體依賴抽象,上層依賴下層。核心思想是面向接口編程。
兩個模塊之間依賴的應該是抽象(接口或抽象類)而不是細節。細節(實現類)依賴於抽象。
依賴原則基於的事實:相對於實現類的多變性,抽象的東西要穩定得多,基於抽象的構架也比基於實現的架構更加穩定,且擴展性更高
接口分離原則:模塊間要通過具體接口分離開,而不是通過類強耦合。例如A類對B類的依賴,可以抽象接口I,B實現I,A類依賴I來實現。但是抽象接口必須功能最小化(與單一功能原則有點不謀而合)。
迪米特原則:最小依賴原則,一個類對其他類盡可能少的了解,只與朋友通信。降低耦合
總結:
依賴原則告訴我們要面向接口編程;
接口分離原則告訴我們設計接口的時候功能要單一;
里式替換告訴我們不要破壞繼承體系,而是去擴展;
單一功能原則告訴實現類要功能單一。
開放封閉原則則是總綱,對擴展開放,對修改封閉。