三大特性:編程
五大原則:架構
單一功能原則 : 每一個類型(包括接口和抽象)功能要求單一,只負責一件事情。框架
開放封閉原則:一個軟件實體應該對擴展開發,對修改關閉。可擴展可是不可更改。spa
核心:用抽象構建框架,用實現類實現擴展。設計
替換原則(里氏代換原則):子類可以替換父類,出如今父類可以出現的任何地方對象
當使用繼承時,儘可能遵循歷史替換原則,儘可能不要去重寫或者重載父類的方法,以避免破壞整個繼承體系的 。由於父類在定義或者實現某些方法時,規定了必須遵照的規則和契約。繼承
依賴原則:具體依賴抽象,上層依賴下層。核心思想是面向接口編程。接口
兩個模塊之間依賴的應該是抽象(接口或抽象類)而不是細節。細節(實現類)依賴於抽象。開發
依賴原則基於的事實:相對於實現類的多變性,抽象的東西要穩定得多,基於抽象的構架也比基於實現的架構更加穩定,且擴展性更高擴展
接口分離原則:模塊間要經過具體接口分離開,而不是經過類強耦合。例如A類對B類的依賴,能夠抽象接口I,B實現I,A類依賴I來實現。可是抽象接口必須功能最小化(與單一功能原則有點不謀而合)。
迪米特原則:最小依賴原則,一個類對其餘類儘量少的瞭解,只與朋友通訊。下降耦合
總結:
依賴原則告訴咱們要面向接口編程;
接口分離原則告訴咱們設計接口的時候功能要單一;
裏式替換告訴咱們不要破壞繼承體系,而是去擴展;
單一功能原則告訴實現類要功能單一。
開放封閉原則則是總綱,對擴展開放,對修改封閉。